Was muss ich mir ansehen, um zu sehen, ob ich unter Windows oder Unix usw. bin?
python
cross-platform
platform-specific
platform-agnostic
Mark Harrison
quelle
quelle
Antworten:
Die Ausgabe von
platform.system()
ist wie folgt:Linux
Darwin
Windows
Siehe:
platform
- Zugriff auf die Identifizierungsdaten der zugrunde liegenden Plattformquelle
platform
übersys.platform
?platform.system()
kehrt"Windows"
statt statt"win32"
.sys.platform
enthält auch"linux2"
alte Versionen von Python, während es nur"linux"
neuere enthält .platform.system()
ist immer gerade zurückgekehrt"Linux"
.os.uname()
existiert nur für Unix-Systeme. Die Python 3-Dokumente: docs.python.org/3/library/os.htmlAvailability: recent flavors of Unix.
Dang - lbrandy hat mich hart getroffen, aber das heißt nicht, dass ich Ihnen nicht die Systemergebnisse für Vista liefern kann!
... und ich kann nicht glauben, dass noch niemand einen für Windows 10 gepostet hat:
quelle
platform.release()
'7'
platform.release()
auf meinem Windows 10 gelaufen und es hat mir definitiv nur gegeben'8'
. Vielleicht habe ich Python vor dem Upgrade installiert, aber wirklich?Für die Aufzeichnung hier die Ergebnisse auf Mac:
quelle
platform.release()
kehrt'19.2.0'
Beispielcode zur Unterscheidung von Betriebssystemen mithilfe von Python:
quelle
Sie können auch verwenden,
sys.platform
wenn Sie bereits importiert habensys
und kein anderes Modul importieren möchtenquelle
Wenn Sie vom Benutzer lesbare, aber dennoch detaillierte Daten wünschen, können Sie platform.platform () verwenden.
Hier sind einige verschiedene mögliche Anrufe, die Sie tätigen können, um festzustellen, wo Sie sich befinden
Die Ausgaben dieses Skripts liefen auf einigen verschiedenen Systemen (Linux, Windows, Solaris, MacOS) und Architekturen (x86, x64, Itanium, Power PC, Sparc) sind hier verfügbar: https://github.com/hpcugent/easybuild/ wiki / OS_flavor_name_version
Der Ubuntu 12.04 Server bietet zum Beispiel:
quelle
DeprecationWarning: dist() and linux_distribution() functions are deprecated in Python 3.5
Kurzgeschichte
Verwenden Sie
platform.system()
. Es kehrt zurückWindows
,Linux
oderDarwin
(für OSX).Lange Geschichte
Es gibt drei Möglichkeiten, um das Betriebssystem in Python zu erhalten, jede mit ihren eigenen Vor- und Nachteilen:
Methode 1
So funktioniert das ( Quelle ): Intern werden Betriebssystem-APIs aufgerufen, um den vom Betriebssystem definierten Namen des Betriebssystems abzurufen. Siehe hier für verschiedene OS-spezifische Werte.
Pro: Keine Magie, niedriges Level.
Con: OS-Version abhängig, daher am besten nicht direkt verwenden.
Methode 2
Wie das funktioniert ( Quelle ): Intern wird geprüft, ob Python über betriebssystemspezifische Module namens posix oder nt verfügt.
Pro: Einfach zu überprüfen, ob posix OS
Con: keine Unterscheidung zwischen Linux oder OSX.
Methode 3
So funktioniert das ( Quelle ): Intern werden eventuell interne Betriebssystem-APIs aufgerufen, betriebssystemversionsspezifische Namen wie 'win32' oder 'win16' oder 'linux1' abgerufen und dann auf allgemeinere Namen wie 'Windows' oder 'Linux' oder normalisiert 'Darwin' durch Anwendung mehrerer Heuristiken.
Pro: Beste tragbare Methode für Windows, OSX und Linux.
Con: Python-Leute müssen die Normalisierungsheuristik auf dem neuesten Stand halten.
Zusammenfassung
platform.system()
.posix
odernt
dann verwenden möchtenos.name
.sys.platform
.quelle
Wie wäre es mit einer neuen Antwort:
Dies wäre die Ausgabe, wenn ich MACOS verwenden würde
quelle
Ich habe eine etwas systematischere Auflistung der Werte begonnen, die Sie mit den verschiedenen Modulen erwarten können (Sie können Ihr System jederzeit bearbeiten und hinzufügen):
Linux (64 Bit) + WSL
sys.platform
wird die Kernel-Version angehängt, z. B.linux2
bleibt alles andere identischplatform.architecture() = ('64bit', 'ELF')
FENSTER (64bit)
(mit 32-Bit-Spalte im 32-Bit-Subsystem)
Einige Anmerkungen:
distutils.util.get_platform()
die mit `sysconfig.get_platform identisch istUm mit Ihrem System zu vergleichen, führen Sie einfach dieses Skript aus (und fügen Sie die Ergebnisse hier an, wenn sie fehlen :)
quelle
Ich verwende das mit Weblogic gelieferte WLST-Tool und es implementiert das Plattformpaket nicht.
Abgesehen vom Patchen des Systems javaos.py ( Problem mit os.system () unter Windows 2003 mit jdk1.5 ) (was ich nicht tun kann, muss ich sofort Weblogic verwenden ), verwende ich Folgendes:
quelle
/usr/bin/python3.2
quelle
Für Jython der einzige Weg os Name , den ich gefunden zu bekommen , ist zu prüfen ,
os.name
Java - Eigenschaft (versuchtesys
,os
undplatform
Module für Jython 2.5.3 auf WinXP):quelle
Interessante Ergebnisse unter Windows 8:
Edit: Das ist ein Fehler
quelle
Achten Sie , wenn Sie unter Windows mit Cygwin sind , wo
os.name
istposix
.quelle
in der gleichen Richtung ....
quelle
Wenn Sie nicht nach der Kernel-Version usw. suchen, sondern nach der Linux-Distribution, möchten Sie möglicherweise Folgendes verwenden
in python2.6 +
in python2.4
Dies funktioniert natürlich nur, wenn Sie dies unter Linux ausführen. Wenn Sie ein allgemeineres Skript plattformübergreifend haben möchten, können Sie dies mit Codebeispielen mischen, die in anderen Antworten angegeben sind.
quelle
Versuche dies:
und du kannst es schaffen:
quelle
os.uname()
ist nicht verfügbar unter Windows: docs.python.org/2/library/os.html#os.uname Verfügbarkeit: die letzten Aromen von Unix.Überprüfen Sie die verfügbaren Tests mit der Modulplattform und drucken Sie die Antwort für Ihr System aus:
quelle
Sie können auch nur das Plattformmodul verwenden, ohne das Betriebssystemmodul zu importieren, um alle Informationen abzurufen.
Ein schönes und ordentliches Layout für Berichtszwecke kann mit dieser Zeile erreicht werden:
Das gibt diese Ausgabe:
Was normalerweise fehlt, ist die Betriebssystemversion, aber Sie sollten wissen, ob Sie Windows, Linux oder Mac ausführen. Eine plattformunabhängige Methode ist die Verwendung dieses Tests:
quelle
Ich weiß, dass dies eine alte Frage ist, aber ich glaube, dass meine Antwort für einige Leute hilfreich sein könnte, die nach einer einfachen, leicht verständlichen pythonischen Methode suchen, um das Betriebssystem in ihrem Code zu erkennen. Getestet auf Python3.7
quelle
Wenn Sie macOS X ausführen und ausführen, erhalten
platform.system()
Sie darwin, da macOS X auf dem Darwin-Betriebssystem von Apple basiert. Darwin ist der Kernel von macOS X und im Wesentlichen macOS X ohne die GUI.quelle
Diese Lösung funktioniert sowohl für
python
als auchjython
.Modul os_identify.py :
Verwenden Sie wie folgt:
quelle
Wie wäre es mit einer einfachen Enum-Implementierung wie der folgenden? Keine Notwendigkeit für externe Bibliotheken!
Sie können einfach mit Enum-Wert zugreifen
PS Es ist Python3
quelle
Sie können sich den Code ansehen, der
pyOSinfo
Teil des Pip-Date- Pakets ist, um die relevantesten Betriebssysteminformationen aus Ihrer Python-Distribution zu erhalten.Einer der häufigsten Gründe, warum Benutzer ihr Betriebssystem überprüfen möchten, ist die Terminalkompatibilität und die Verfügbarkeit bestimmter Systembefehle. Leider hängt der Erfolg dieser Überprüfung in gewissem Maße von Ihrer Python-Installation und Ihrem Betriebssystem ab. Ist beispielsweise
uname
bei den meisten Windows-Python-Paketen nicht verfügbar. Das obige Python-Programm zeigt Ihnen die Ausgabe der am häufigsten verwendeten integrierten Funktionen, die bereits von bereitgestellt wurdenos, sys, platform, site
.Der beste Weg, um nur den wesentlichen Code zu erhalten, besteht darin , dies als Beispiel zu betrachten. (Ich denke, ich hätte es einfach hier einfügen können, aber das wäre politisch nicht korrekt gewesen.)
quelle
Ich komme zu spät zum Spiel, aber für den Fall, dass jemand es braucht, ist dies eine Funktion, mit der ich meinen Code so anpasse, dass er unter Windows, Linux und MacOs läuft:
quelle