Możliwe wartości z sys.platform?

Odpowiedzi:

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            │
┕━━━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━━┙

(*) Przed Pythonem 3.3 wartość dla dowolnej wersji systemu Linux jest zawsze linux2; potem jest linux.

ICB
źródło
5
Powinieneś zrobić listę tego.
Benjamin Paap,
3
Prawdopodobnie najbardziej użyteczna odpowiedź w chwili pisania tego tekstu. Dodatkowa karma dla stylowego arkusza kalkulacyjnego ASCII-art.
Cecil Curry
1
A co z obecnymi macOSsystemami? Czy nadal postanawiają darwin?
blubberdiblub
1
Dostaję „linux”
vidstige
1
@blubberdiblub yes.
Michael Leonard
34

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

darwin

Linux (jądro 2.6):

linux2

Windows XP 32-bitowy:

win32

Wersje w nawiasach zostały sprawdzone - inne / nowsze wersje prawdopodobnie będą takie same.

dbr
źródło
A co z wersjami OS X wyższymi niż 10.5, czy są one również oznaczone jako „darwin”? A co z wersjami jądra Linuksa wyższymi niż 2.6? Wersje systemu Windows wyższe niż XP?
Dennis
@Dennis Wyjaśniono w odpowiedzi - wymienione wersje to te, które sprawdziłem. Jestem prawie pewien, że wszystkie wersje OS X będą darwin, wszystkie jądra linux 2.x będą linux2, a Windows będzie win32 lub win64 .. ale nie sprawdzałem
dbr
1
Nowsze wersje Linuksa mogą mieć „linux3” zamiast „linux2”.
MarioVilas
4
@MarioVilas: Nie, Python przylgnął do linux2 nawet dla jądra linux3, ponieważ z punktu widzenia Pythona nie ma różnicy.
Martijn Pieters
4
64-bitowa instalacja Pythona w 64-bitowym systemie Windows również wyświetli komunikat „win32”. Używanie platform.system()może być mniej kłopotliwym rozwiązaniem („Windows” kontra „Linux”).
Daniel F
22

Jak wskazywali inni, sys.platform wywodzi się od nazwy nadanej systemowi przez producenta systemu. Jednak Python dodaje również platformę do sys.path, więc możesz przejrzeć wszystkie katalogi plat- * w dystrybucji Pythona.

To daje ci listę

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

Oczywiście sys.platform może mieć dodatkowe wartości, gdy Python zostanie skompilowany w systemie, dla którego nie utworzono katalogu specyficznego dla platformy.

Od tutaj .

Mitch Wheat
źródło
5
Przez kopanie przez źródłowego istnieje kilka bardziej powszechne: win32, os2,unknown
Nicklas A.
7
Na Pythonie 3.3 i później linux2staje linux. źródło
Michael Platings
3
@Deqing: naprawiono trzy lata później :)
xOneca
9

FreeBSD 7.0: freebsd7. FreeBSD8, ale kompilacja wykonana na poprzedniej wersji, ta sama odpowiedź.

Dlatego pamiętaj, że masz platformę używaną do kompilacji, a nie tę, na której korzystasz.

Keltia
źródło
2

Od 29 grudnia 2013 r. System OS X 10.9.1 Mavericks nadal nosi nazwę Darwin.

Jason Elwood
źródło
1
Darwin to jądro OS X. Aby uzyskać numer wersji OS X, użyj platform.mac_ver ()
wolfd