Можливі значення з sys.platform?


Відповіді:


110
┍━━━━━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━━━━━━┑
│ System              │ Value               │
┝━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━━┥
│ Linux               │ linux or linux2 (*) │
│ Windows             │ win32               │
│ Windows/Cygwin      │ cygwin              │
│ Windows/MSYS2       │ msys                │
│ Mac OS X            │ darwin              │
│ OS/2                │ os2                 │
│ OS/2 EMX            │ os2emx              │
│ RiscOS              │ riscos              │
│ AtheOS              │ atheos              │
│ FreeBSD 7           │ freebsd7            │
│ FreeBSD 8           │ freebsd8            │
│ FreeBSD N           │ freebsdN            │
│ OpenBSD 6           │ openbsd6            │
┕━━━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━━┙

(*) До версії Python 3.3 значення для будь-якої версії Linux завжди є linux2; після, це так linux.


5
Вам слід скласти список цього.
Бенджамін Паап,

3
Мабуть, найкорисніша відповідь на цей час. Додаткова карма для стильної електронної таблиці ASCII.
Сесіл Каррі

1
А як щодо сучасних macOSсистем? Вони все ще вирішують darwin?
blubberdiblub

1
Я отримую "Linux"
vidstige

1
@blubberdiblub так.
Майкл Леонард

34

Mac OS X (10.4, 10.5, 10.7, 10.8):

darwin

Linux (ядро 2.6):

linux2

32-розрядна версія Windows XP:

win32

Версії в дужках перевірені - інші / новіші версії, ймовірно, будуть однаковими.


Що стосується версій OS X, вищих за 10.5, чи вони також позначені як "дарвін"? А як щодо версій ядра Linux вище 2.6? Версії Windows вищі за XP?
Денніс,

@Dennis Роз'яснено у відповідь - перелічені версії - це ті, які я перевірив. Я майже впевнений, що будуть усі версії OS X, будуть darwinвсі ядра Linux 2.x linux2, а Windows буде win32 або win64 .. але, я не перевіряв
dbr

1
Новіші версії Linux можуть мати "linux3" замість "linux2".
MarioVilas

4
@MarioVilas: Ні, Python застряг у linux2 навіть для ядер linux3, оскільки немає різниці з точки зору Python.
Мартін Пітерс

4
64-розрядна установка Python у 64-розрядної Windows також виведе "win32". Використання platform.system()може бути менш заплутаним рішенням ("Windows" проти "Linux").
Даніель Ф,

22

Як вказували інші, sys.platform походить від імені, яке постачальник систем надає своїй системі. Однак Python також додає plat- до sys.path, тому ви можете переглянути всі каталоги plat- * у розподілі Python.

Це дає вам список

aix3 aix4 atheos beos5 darwin freebsd2 freebsd3 freebsd4 freebsd5 freebsd6 freebsd7 generic irix5 irix6 linux2 mac netbsd1 next3 os2emx riscos sunos5 unixware7

Звичайно, sys.platform може мати додаткові значення, коли Python компілюється в системі, для якої не створено жодного каталогу, що відповідає платформі.

Від сюди .


5
Під час риття через вихідний код є кілька більш загальні: win32, os2,unknown
Ніклас А.

7
На Python 3.3 і пізніше linux2стає linux. джерело
Michael Platings

3
@Deqing: виправлено через три роки :)
xOneca

9

FreeBSD 7.0: freebsd7 . FreeBSD8, але збірка виконана за попередньою версією, та сама відповідь.

Тому майте на увазі, що ви використовуєте платформу для збірки, а не ту, на якій ви працюєте.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.