Mögliche Werte von sys.platform?

79

Was sind die möglichen Rückgabewerte des folgenden Befehls?

import sys
print sys.platform

Ich weiß, dass es viele Möglichkeiten gibt, daher interessiere ich mich hauptsächlich für die "wichtigsten" (Windows, Linux, Mac OS).

dbr
quelle
1
Werfen
Dennis

Antworten:

108
┍━━━━━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━━━━━━┑
│ 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            │
┕━━━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━━┙

(*) Vor Python 3.3 ist der Wert für jede Linux-Version immer linux2; danach ist es linux.

ICB
quelle
5
Sie sollten eine Liste davon machen.
Benjamin Paap
3
Wahrscheinlich die nützlichste Antwort zum Zeitpunkt dieses Schreibens. Zusätzliches Karma für die stilvolle ASCII-Art-Tabelle.
Cecil Curry
1
Was ist mit aktuellen macOSSystemen? Entschließen sie sich noch dazu darwin?
Blubberdiblub
1
Ich bekomme "Linux"
vidstige
1
@blubberdiblub ja.
Michael Leonard
34

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

darwin

Linux (2.6 Kernel):

linux2

Windows XP 32 Bit:

win32

Versionen in Klammern wurden überprüft - andere / neuere Versionen sind wahrscheinlich identisch.

dbr
quelle
Was ist mit OS X-Versionen höher als 10.5? Sind sie auch unter "Darwin" gekennzeichnet? Was ist mit Linux-Kernel-Versionen höher als 2.6? Windows-Versionen höher als XP?
Dennis
@ Tennis Geklärt als Antwort - die aufgelisteten Versionen sind diejenigen, die ich überprüft habe. Ich bin fast sicher , dass alle OS X - Versionen werden darwinalle 2.x Linux - Kernel wird linux2, und Windows wird win32 oder win64 sein .. aber ich habe nicht geprüft
dbr
1
Neuere Linux-Versionen haben möglicherweise "linux3" anstelle von "linux2".
MarioVilas
4
@MarioVilas: Nein, Python hat sich auch für Linux3-Kernel an Linux2 gehalten, da es aus Pythons Sicht keinen Unterschied gibt.
Martijn Pieters
4
Eine 64-Bit-Python-Installation unter 64-Bit-Windows gibt auch "win32" aus. Die Verwendung platform.system()kann eine weniger verwirrende Lösung sein ("Windows" vs "Linux").
Daniel F
22

Wie andere angegeben haben, wird sys.platform von dem Namen abgeleitet, den der Systemanbieter seinem System gibt. Python fügt jedoch auch plat- zu sys.path hinzu, sodass Sie alle plat- * -Verzeichnisse in der Python-Distribution anzeigen können.

Dies gibt Ihnen die Liste

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

Natürlich kann sys.platform zusätzliche Werte haben, wenn Python auf einem System kompiliert wird, für das kein plattformspezifisches Verzeichnis erstellt wurde.

Von hier aus .

Mitch Wheat
quelle
5
Durch das Graben durch den Sourcecode gibt es ein paar häufiger: win32, os2,unknown
Nicklas A.
7
Auf Python 3.3 und höher linux2wird linux. Quelle
Michael Platings
3
@ Deqing: drei Jahre später
behoben
9

FreeBSD 7.0 : freebsd7. FreeBSD8 aber Build durchgeführt auf vorheriger Version, gleiche Antwort.

Beachten Sie also, dass Sie die Plattform erhalten, die für den Build verwendet wird, und nicht unbedingt die, auf der Sie ausgeführt werden.

Keltia
quelle
2

Ab dem 29. Dezember 2013 trägt OS X 10.9.1 Mavericks weiterhin die Bezeichnung Darwin.

Jason Elwood
quelle
1
Darwin ist der OS X-Kernel. Um die OS X-Versionsnummer zu erhalten, verwenden Sie platform.mac_ver ()
wolfd