platform — Zugriff auf identifizierende Daten der zugrunde liegenden Plattform

Quellcode: Lib/platform.py


Hinweis

Spezifische Plattformen sind alphabetisch aufgelistet, wobei Linux im Abschnitt Unix enthalten ist.

Plattformübergreifend

platform.architecture(executable=sys.executable, bits='', linkage='')

Fragt die angegebene ausführbare Datei (standardmäßig die Python-Interpreter-Binärdatei) nach verschiedenen Architekturinformationen ab.

Gibt ein Tupel (bits, linkage) zurück, das Informationen über die Bit-Architektur und das für die ausführbare Datei verwendete Linkage-Format enthält. Beide Werte werden als Zeichenketten zurückgegeben.

Werte, die nicht bestimmt werden können, werden so zurückgegeben, wie sie durch die Parameter-Presets angegeben wurden. Wenn bits als '' angegeben wird, wird die Größe von sizeof(pointer) (oder sizeof(long) in Python-Versionen < < 1.5.2) als Indikator für die unterstützte Zeigergröße verwendet.

Die Funktion stützt sich für die eigentliche Arbeit auf das file-Kommando des Systems. Dieses ist auf den meisten, wenn nicht allen Unix-Plattformen und einigen Nicht-Unix-Plattformen verfügbar und dann nur, wenn die ausführbare Datei auf den Python-Interpreter verweist. Bei Nichterfüllung der oben genannten Anforderungen werden vernünftige Standardwerte verwendet.

Hinweis

Auf macOS (und möglicherweise anderen Plattformen) können ausführbare Dateien universelle Dateien sein, die mehrere Architekturen enthalten.

Um die "64-Bit-Fähigkeit" des aktuellen Interpreters zu ermitteln, ist es zuverlässiger, das Attribut sys.maxsize abzufragen.

is_64bits = sys.maxsize > 2**32
platform.machine()

Gibt den Maschinentyp zurück, z.B. 'AMD64'. Eine leere Zeichenkette wird zurückgegeben, wenn der Wert nicht ermittelt werden kann.

Die Ausgabe ist plattformabhängig und kann sich in Groß-/Kleinschreibung und Namenskonventionen unterscheiden.

platform.node()

Gibt den Netzwerknamen des Computers zurück (möglicherweise nicht vollständig qualifiziert!). Eine leere Zeichenkette wird zurückgegeben, wenn der Wert nicht ermittelt werden kann.

platform.platform(aliased=False, terse=False)

Gibt eine einzelne Zeichenkette zurück, die die zugrunde liegende Plattform mit möglichst vielen nützlichen Informationen identifiziert.

Die Ausgabe ist für Menschen lesbar und nicht für Maschinen lesbar. Sie kann auf verschiedenen Plattformen unterschiedlich aussehen, und das ist beabsichtigt.

Wenn aliased wahr ist, verwendet die Funktion Aliase für verschiedene Plattformen, die Systemnamen melden, die von ihren gängigen Namen abweichen, z. B. wird SunOS als Solaris gemeldet. Die Funktion system_alias() wird zur Implementierung dieser Funktion verwendet.

Wenn terse auf wahr gesetzt ist, gibt die Funktion nur die absolut minimalen Informationen zurück, die zur Identifizierung der Plattform erforderlich sind.

Geändert in Version 3.8: Auf macOS verwendet die Funktion jetzt mac_ver(), wenn diese eine nicht-leere Release-Zeichenkette zurückgibt, um die macOS-Version anstelle der Darwin-Version zu erhalten.

platform.processor()

Gibt den (echten) Prozessornamen zurück, z.B. 'amdk6'.

Eine leere Zeichenkette wird zurückgegeben, wenn der Wert nicht ermittelt werden kann. Beachten Sie, dass viele Plattformen diese Informationen nicht bereitstellen oder einfach den gleichen Wert wie für machine() zurückgeben. NetBSD tut dies.

platform.python_build()

Gibt ein Tupel (buildno, builddate) zurück, das die Python-Build-Nummer und das Datum als Zeichenketten angibt.

platform.python_compiler()

Gibt eine Zeichenkette zurück, die den Compiler identifiziert, der zum Kompilieren von Python verwendet wurde.

platform.python_branch()

Gibt eine Zeichenkette zurück, die den SCM-Branch der Python-Implementierung identifiziert.

platform.python_implementation()

Gibt eine Zeichenkette zurück, die die Python-Implementierung identifiziert. Mögliche Rückgabewerte sind: 'CPython', 'IronPython', 'Jython', 'PyPy'.

platform.python_revision()

Gibt eine Zeichenkette zurück, die die SCM-Revision der Python-Implementierung identifiziert.

platform.python_version()

Gibt die Python-Version als Zeichenkette 'major.minor.patchlevel' zurück.

Beachten Sie, dass im Gegensatz zur Python-Zeichenkette sys.version der zurückgegebene Wert immer die Patch-Ebene enthält (standardmäßig 0).

platform.python_version_tuple()

Gibt die Python-Version als Tupel (major, minor, patchlevel) von Zeichenketten zurück.

Beachten Sie, dass im Gegensatz zur Python-Zeichenkette sys.version der zurückgegebene Wert immer die Patch-Ebene enthält (standardmäßig '0').

platform.release()

Gibt die System-Release zurück, z.B. '2.2.0' oder 'NT'. Eine leere Zeichenkette wird zurückgegeben, wenn der Wert nicht ermittelt werden kann.

platform.system()

Gibt den System-/OS-Namen zurück, wie z.B. 'Linux', 'Darwin', 'Java', 'Windows'. Eine leere Zeichenkette wird zurückgegeben, wenn der Wert nicht ermittelt werden kann.

Auf iOS und Android gibt dies den benutzerseitigen OS-Namen zurück (d.h. 'iOS, 'iPadOS' oder 'Android'). Um den Kernel-Namen ('Darwin' oder 'Linux') zu erhalten, verwenden Sie os.uname().

platform.system_alias(system, release, version)

Gibt (system, release, version) zurück, die auf gängige Marketingnamen für einige Systeme umgestellt wurden. Außerdem wird die Reihenfolge der Informationen in einigen Fällen neu geordnet, wenn dies sonst zu Verwirrung führen würde.

platform.version()

Gibt die Release-Version des Systems zurück, z.B. '#3 on degas'. Eine leere Zeichenkette wird zurückgegeben, wenn der Wert nicht ermittelt werden kann.

Auf iOS und Android ist dies die benutzerseitige OS-Version. Um die Darwin- oder Linux-Kernel-Version zu erhalten, verwenden Sie os.uname().

platform.uname()

Ein ziemlich portables uname-Interface. Gibt ein namedtuple() zurück, das sechs Attribute enthält: system, node, release, version, machine und processor.

processor wird spät, bei Bedarf aufgelöst.

Hinweis: Die ersten beiden Attributnamen unterscheiden sich von den Namen, die von os.uname() präsentiert werden, wo sie sysname und nodename heißen.

Einträge, die nicht ermittelt werden können, werden auf '' gesetzt.

Geändert in Version 3.3: Ergebnis von einem Tupel zu einem namedtuple() geändert.

Geändert in Version 3.9: processor wird spät und nicht sofort aufgelöst.

platform.invalidate_caches()

Löscht den internen Cache von Informationen, wie z.B. den uname(). Dies ist typischerweise nützlich, wenn der node() der Plattform durch einen externen Prozess geändert wird und man den aktualisierten Wert abrufen muss.

Hinzugefügt in Version 3.14.

Java-Plattform

platform.java_ver(release='', vendor='', vminfo=('', '', ''), osinfo=('', '', ''))

Versionsschnittstelle für Jython.

Gibt ein Tupel (release, vendor, vminfo, osinfo) zurück, wobei vminfo ein Tupel (vm_name, vm_release, vm_vendor) und osinfo ein Tupel (os_name, os_version, os_arch) ist. Werte, die nicht ermittelt werden können, werden auf die als Parameter angegebenen Standardwerte gesetzt (die alle standardmäßig '' sind).

Veraltet seit Version 3.13, wird in Version 3.15 entfernt: Sie war größtenteils ungetestet, hatte eine verwirrende API und war nur für die Jython-Unterstützung nützlich.

Windows-Plattform

platform.win32_ver(release='', version='', csd='', ptype='')

Ruft zusätzliche Versionsinformationen aus der Windows-Registrierung ab und gibt ein Tupel (release, version, csd, ptype) zurück, das sich auf die OS-Release, die Versionsnummer, die CSD-Stufe (Service Pack) und den OS-Typ (Multi-/Single-Prozessor) bezieht. Werte, die nicht ermittelt werden können, werden auf die als Parameter angegebenen Standardwerte gesetzt (die alle standardmäßig eine leere Zeichenkette sind).

Als Hinweis: ptype ist 'Uniprocessor Free' auf Single-Prozessor-NT-Maschinen und 'Multiprocessor Free' auf Multi-Prozessor-Maschinen. Das 'Free' bezieht sich darauf, dass die OS-Version frei von Debugging-Code ist. Es könnte auch 'Checked' angeben, was bedeutet, dass die OS-Version Debugging-Code verwendet, d.h. Code, der Argumente, Bereiche usw. prüft.

platform.win32_edition()

Gibt eine Zeichenkette zurück, die die aktuelle Windows-Edition darstellt, oder None, wenn der Wert nicht ermittelt werden kann. Mögliche Werte sind unter anderem 'Enterprise', 'IoTUAP', 'ServerStandard' und 'nanoserver'.

Hinzugefügt in Version 3.8.

platform.win32_is_iot()

Gibt True zurück, wenn die von win32_edition() zurückgegebene Windows-Edition als IoT-Edition erkannt wird.

Hinzugefügt in Version 3.8.

macOS-Plattform

platform.mac_ver(release='', versioninfo=('', '', ''), machine='')

Ruft macOS-Versionsinformationen ab und gibt sie als Tupel (release, versioninfo, machine) zurück, wobei versioninfo ein Tupel (version, dev_stage, non_release_version) ist.

Einträge, die nicht ermittelt werden können, werden auf '' gesetzt. Alle Tupel-Einträge sind Zeichenketten.

iOS-Plattform

platform.ios_ver(system='', release='', model='', is_simulator=False)

Ruft iOS-Versionsinformationen ab und gibt sie als namedtuple() mit den folgenden Attributen zurück.

  • system ist der OS-Name; entweder 'iOS' oder 'iPadOS'.

  • release ist die iOS-Versionsnummer als Zeichenkette (z.B. '17.2').

  • model ist die Geräte-Modellkennung; dies ist eine Zeichenkette wie 'iPhone13,2' für ein physisches Gerät oder 'iPhone' auf einem Simulator.

  • is_simulator ist ein boolescher Wert, der beschreibt, ob die App auf einem Simulator oder einem physischen Gerät läuft.

Einträge, die nicht ermittelt werden können, werden auf die als Parameter angegebenen Standardwerte gesetzt.

Unix-Plattformen

platform.libc_ver(executable=sys.executable, lib='', version='', chunksize=16384)

Versucht, die libc-Version zu ermitteln, gegen die die Datei executable (standardmäßig der Python-Interpreter) gelinkt ist. Gibt ein Tupel von Zeichenketten (lib, version) zurück, die standardmäßig auf die angegebenen Parameter gesetzt werden, falls die Suche fehlschlägt.

Beachten Sie, dass diese Funktion intime Kenntnisse darüber hat, wie verschiedene libc-Versionen Symbole zur ausführbaren Datei hinzufügen, und wahrscheinlich nur für ausführbare Dateien verwendbar ist, die mit gcc kompiliert wurden.

Die Datei wird in Blöcken von chunksize Bytes gelesen und gescannt.

Linux-Plattformen

platform.freedesktop_os_release()

Ruft die Betriebssystemidentifikation aus der os-release-Datei ab und gibt sie als Dictionary zurück. Die os-release-Datei ist ein freedesktop.org-Standard und auf den meisten Linux-Distributionen verfügbar. Eine bemerkenswerte Ausnahme sind Android und Android-basierte Distributionen.

Löst OSError oder eine Unterklasse aus, wenn weder /etc/os-release noch /usr/lib/os-release gelesen werden können.

Bei Erfolg gibt die Funktion ein Dictionary zurück, bei dem Schlüssel und Werte Zeichenketten sind. Werte haben ihre Sonderzeichen wie " und $ unzensiert. Die Felder NAME, ID und PRETTY_NAME sind gemäß dem Standard immer definiert. Alle anderen Felder sind optional. Anbieter können zusätzliche Felder einfügen.

Beachten Sie, dass Felder wie NAME, VERSION und VARIANT Zeichenketten sind, die für die Darstellung für Benutzer geeignet sind. Programme sollten Felder wie ID, ID_LIKE, VERSION_ID oder VARIANT_ID verwenden, um Linux-Distributionen zu identifizieren.

Beispiel

def get_like_distro():
    info = platform.freedesktop_os_release()
    ids = [info["ID"]]
    if "ID_LIKE" in info:
        # ids are space separated and ordered by precedence
        ids.extend(info["ID_LIKE"].split())
    return ids

Hinzugefügt in Version 3.10.

Android-Plattform

platform.android_ver(release='', api_level=0, manufacturer='', model='', device='', is_emulator=False)

Ruft Android-Geräteinformationen ab. Gibt ein namedtuple() mit den folgenden Attributen zurück. Werte, die nicht ermittelt werden können, werden auf die als Parameter angegebenen Standardwerte gesetzt.

  • release - Android-Version, als Zeichenkette (z.B. "14").

  • api_level - API-Level des laufenden Geräts, als Ganzzahl (z.B. 34 für Android 14). Um das API-Level zu erhalten, gegen das Python kompiliert wurde, siehe sys.getandroidapilevel().

  • manufacturer - Herstellername.

  • model - Modellname – typischerweise der Marketingname oder die Modellnummer.

  • device - Gerätename – typischerweise die Modellnummer oder ein Codename.

  • is_emulator - True, wenn das Gerät ein Emulator ist; False, wenn es ein physisches Gerät ist.

Google pflegt eine Liste bekannter Modell- und Gerätenamen.

Hinzugefügt in Version 3.13.

Verwendung über die Kommandozeile

platform kann auch direkt mit dem -m Schalter des Interpreters aufgerufen werden.

python -m platform [--terse] [--nonaliased] [{nonaliased,terse} ...]

Die folgenden Optionen werden akzeptiert:

--terse

Gibt knappe Informationen über die Plattform aus. Dies entspricht dem Aufruf von platform.platform() mit dem auf True gesetzten Argument terse.

--nonaliased

Plattforminformationen ohne System-/Betriebssystemnamen-Aliasing ausgeben. Dies entspricht dem Aufruf von platform.platform() mit dem Argument aliased auf True gesetzt.

Sie können auch ein oder mehrere positionelle Argumente (terse, nonaliased) übergeben, um das Ausgabeformat explizit zu steuern. Diese verhalten sich ähnlich wie ihre entsprechenden Optionen.