Возможные значения из sys.platform?


79

Каковы возможные значения возврата из следующей команды?

import sys
print sys.platform

Я знаю, что возможностей много, поэтому меня в основном интересуют «основные» (Windows, Linux, Mac OS)


Ответы:


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-art.
Сесил Карри

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, они тоже помечены как darwin? А как насчет версий ядра 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»).
Daniel F

22

Как указывали другие, sys.platform происходит от имени, которое поставщик системы дает своей системе. Однако Python также добавляет plat- в sys.path, поэтому вы можете просмотреть все каталоги plat- * в дистрибутиве Python.

Это дает вам список

aix3 aix4 atheos beos5 дарвин freebsd2 freebsd3 freebsd4 freebsd5 freebsd6 freebsd7 общий irix5 irix6 linux2 mac netbsd1 next3 os2emx riscos sunos5 unixware7

Конечно, sys.platform может иметь дополнительные значения, когда Python компилируется в системе, для которой не был создан каталог для конкретной платформы.

От сюда .


5
При рытье через исходный код есть несколько более общие: win32, os2,unknown
Никлас А.

7
На Python 3.3 и новее linux2становится linux. источник
Майкл Плэтингс 01

3
@Deqing: исправлено три года спустя :)
xOneca

9

FreeBSD 7.0 freebsd7. FreeBSD8, но сборка выполнена на предыдущей версии, тот же ответ.

Так что имейте в виду, что для сборки используется платформа, а не обязательно та, на которой вы работаете.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.