platform — Tillgång till underliggande plattforms identifieringsdata

Källkod: Lib/platform.py


Anteckning

Specifika plattformar listas i alfabetisk ordning, med Linux inkluderat i Unix-avsnittet.

Plattformsoberoende

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

Frågar den angivna körbara filen (standard är Python-tolkens binärfil) efter olika arkitekturinformation.

Returnerar en tupel (bits, linkage) som innehåller information om bitarkitekturen och länkningsformatet som används för den körbara filen. Båda värdena returneras som strängar.

Värden som inte kan bestämmas returneras enligt parameterns förinställningar. Om bits anges som '', används sizeof(pointer) (eller sizeof(long) på Python-version < 1.5.2) som indikator för den pekarstorlek som stöds.

Funktionen förlitar sig på systemets file-kommando för att göra det faktiska arbetet. Detta är tillgängligt på de flesta om inte alla Unix-plattformar och vissa icke-Unix-plattformar och då endast om den körbara filen pekar på Python-tolken. Rimliga standardvärden används när ovanstående behov inte uppfylls.

Anteckning

På macOS (och kanske andra plattformar) kan körbara filer vara universella filer som innehåller flera arkitekturer.

För att få reda på den aktuella tolkens ”64-bitness” är det mer tillförlitligt att fråga sys.maxsize-attributet:

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

Returnerar maskintypen, t.ex. 'AMD64'. En tom sträng returneras om värdet inte kan bestämmas.

platform.node()

Returnerar datorns nätverksnamn (får inte vara fullständigt kvalificerat!). En tom sträng returneras om värdet inte kan fastställas.

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

Returnerar en enda sträng som identifierar den underliggande plattformen med så mycket användbar information som möjligt.

Utdata är avsedda att vara mänskligt läsbara snarare än maskinläsbara. Den kan se annorlunda ut på olika plattformar och det är meningen.

Om aliased är true kommer funktionen att använda alias för olika plattformar som rapporterar systemnamn som skiljer sig från deras vanliga namn, t.ex. kommer SunOS att rapporteras som Solaris. Funktionen system_alias() används för att implementera detta.

Om terse sätts till true returnerar funktionen endast den absolut minsta information som behövs för att identifiera plattformen.

Ändrad i version 3.8: På macOS använder funktionen nu mac_ver(), om den returnerar en icke-tom release-sträng, för att få macOS-versionen i stället för darwin-versionen.

platform.processor()

Returnerar det (riktiga) processornamnet, t.ex. 'amdk6'.

En tom sträng returneras om värdet inte kan bestämmas. Observera att många plattformar inte ger denna information eller helt enkelt returnerar samma värde som för machine(). NetBSD gör detta.

platform.python_build()

Returnerar en tupel (buildno, builddate) som anger Python-byggnummer och -datum som strängar.

platform.python_compiler()

Returnerar en sträng som identifierar den kompilator som används för att kompilera Python.

platform.python_branch()

Returnerar en sträng som identifierar SCM-grenen för Python-implementeringen.

platform.python_implementation()

Returnerar en sträng som identifierar Python-implementationen. Möjliga returvärden är: ’CPython’, ’IronPython’, ’Jython’, ’PyPy’.

platform.python_revision()

Returnerar en sträng som identifierar Python-implementationens SCM-revision.

platform.python_version()

Returnerar Python-versionen som strängen 'major.minor.patchlevel'.

Observera att till skillnad från Pythons sys.version kommer det returnerade värdet alltid att innehålla patchlevel (standardvärdet är 0).

platform.python_version_tuple()

Returnerar Python-versionen som en tupel (major, minor, patchlevel) av strängar.

Observera att till skillnad från Pythons sys.version kommer det returnerade värdet alltid att innehålla patchlevel (standardvärdet är '0').

platform.release()

Returnerar systemets release, t.ex. '2.2.0' eller 'NT'. En tom sträng returneras om värdet inte kan bestämmas.

platform.system()

Returnerar system/OS-namnet, till exempel 'Linux', 'Darwin', 'Java', 'Windows'. En tom sträng returneras om värdet inte kan bestämmas.

På iOS och Android returnerar detta namnet på det operativsystem som vänder sig till användaren (dvs. 'iOS, 'iPadOS' eller 'Android'). För att få kärnans namn ('Darwin' eller 'Linux'), använd os.uname().

platform.system_alias(system, release, version)

Returnerar (system, release, version) med alias till vanliga marknadsföringsnamn som används för vissa system. Den gör också en viss omordning av informationen i vissa fall där den annars skulle orsaka förvirring.

platform.version()

Returnerar systemets releaseversion, t.ex. '#3 on degas'. En tom sträng returneras om värdet inte kan bestämmas.

På iOS och Android är detta den OS-version som möter användaren. För att få Darwin- eller Linux-kärnversionen, använd os.uname().

platform.uname()

Ganska portabelt uname-gränssnitt. Returnerar en namedtuple() som innehåller sex attribut: system, node, release, version, machine och processor.

processor löses sent, på begäran.

Observera: De två första attributnamnen skiljer sig från de namn som presenteras av os.uname(), där de heter sysname och nodename.

Poster som inte kan bestämmas sätts till ''.

Ändrad i version 3.3: Resultatet ändrades från en tuple till en namedtuple().

Ändrad i version 3.9: processor löses sent istället för omedelbart.

Java-plattform

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

Versionsgränssnitt för Jython.

Returnerar en tupel (release, vendor, vminfo, osinfo) där vminfo är en tupel (vm_name, vm_release, vm_vendor) och osinfo är en tupel (os_name, os_version, os_arch). Värden som inte kan bestämmas sätts till de standardvärden som anges som parametrar (som alla har '' som standard).

Deprecated since version 3.13, will be removed in version 3.15: Det var i stort sett otestat, hade ett förvirrande API och var bara användbart för Jython-stöd.

Windows-plattform

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

Hämta ytterligare versionsinformation från Windows Registry och returnera en tupel (release, version, csd, ptype) som hänvisar till OS-version, versionsnummer, CSD-nivå (service pack) och OS-typ (multi/single processor). Värden som inte kan bestämmas sätts till de standardvärden som anges som parametrar (som alla har en tom sträng som standard).

Som en ledtråd: ptype är 'Uniprocessor Free' på NT-maskiner med en processor och 'Multiprocessor Free' på maskiner med flera processorer. 'Free' hänvisar till att OS-versionen är fri från felsökningskod. Det kan också stå 'Checked' vilket betyder att OS-versionen använder felsökningskod, dvs. kod som kontrollerar argument, intervall etc.

platform.win32_edition()

Returnerar en sträng som representerar den aktuella Windows-utgåvan, eller None om värdet inte kan fastställas. Möjliga värden inkluderar men är inte begränsade till 'Enterprise', 'IoTUAP', 'ServerStandard' och 'nanoserver'.

Tillagd i version 3.8.

platform.win32_is_iot()

Returnerar True om Windows-utgåvan som returneras av win32_edition() känns igen som en IoT-utgåva.

Tillagd i version 3.8.

macOS-plattform

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

Hämta MacOS-versioninformation och returnera den som tuple (release, versioninfo, machine) med versioninfo som är en tuple (version, dev_stage, non_release_version).

Poster som inte kan bestämmas sätts till ''. Alla tuple-poster är strängar.

iOS-plattform

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

Hämta iOS-versionsinformation och returnera den som en namedtuple() med följande attribut:

  • system är namnet på operativsystemet; antingen 'iOS' eller 'iPadOS'.

  • release är iOS-versionens nummer som en sträng (t.ex. '17.2').

  • model är identifieraren för enhetsmodellen; detta kommer att vara en sträng som 'iPhone13,2' för en fysisk enhet, eller 'iPhone' för en simulator.

  • is_simulator är en boolean som beskriver om appen körs på en simulator eller en fysisk enhet.

Poster som inte kan bestämmas sätts till de standardvärden som anges som parametrar.

Unix-plattformar

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

Försöker fastställa vilken libc-version som filens körbara (standard är Python-tolken) är länkad mot. Returnerar en tupel av strängarna (lib, version) som har de angivna parametrarna som standard om sökningen misslyckas.

Observera att denna funktion har intima kunskaper om hur olika libc-versioner lägger till symboler i den exekverbara filen är förmodligen endast användbar för exekverbara filer som kompilerats med gcc.

Filen läses och skannas i bitar om chunksize bytes.

Linux-plattformar

platform.freedesktop_os_release()

Hämta identifiering av operativsystem från filen os-release och returnera den som en dict. Filen os-release är en freedesktop.org standard och finns tillgänglig i de flesta Linux-distributioner. Ett märkbart undantag är Android och Android-baserade distributioner.

Utlöser OSError eller underklass när varken /etc/os-release eller /usr/lib/os-release kan läsas.

Om funktionen lyckas returnerar den en ordbok där nycklar och värden är strängar. Värden har sina specialtecken som " och $ ociterade. Fälten NAME, ID och PRETTY_NAME är alltid definierade enligt standarden. Alla andra fält är valfria. Leverantörer kan inkludera ytterligare fält.

Observera att fält som NAME, VERSION och VARIANT är strängar som lämpar sig för presentation för användare. Program bör använda fält som ID, ID_LIKE, VERSION_ID eller VARIANT_ID för att identifiera Linux-distributioner.

Exempel:

def get_like_distro():
    info = plattform.freedesktop_os_release()
    ids = [info["ID"]]]
    if "ID_LIKE" in info:
        # ids är mellanslagsseparerade och ordnade efter företräde
        ids.extend(info["ID_LIKE"].split())
    returnera ids

Tillagd i version 3.10.

Android-plattform

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

Hämta information om Android-enheter. Returnerar en namedtuple() med följande attribut. Värden som inte kan bestämmas sätts till de standardvärden som anges som parametrar.

  • release - Android-version, som en sträng (t.ex. "14").

  • api_level - API-nivå för den enhet som körs, som ett heltal (t.ex. 34 för Android 14). För att få API-nivån som Python byggdes mot, se sys.getandroidapilevel().

  • manufacturer - Tillverkarens namn.

  • model - Modellnamn - vanligtvis marknadsföringsnamn eller modellnummer.

  • enhet - enhetens namn - vanligtvis modellnumret eller ett kodnamn.

  • is_emulator - True om enheten är en emulator; False om det är en fysisk enhet.

Google upprätthåller en lista över kända modell- och enhetsnamn.

Tillagd i version 3.13.

Användning av kommandoraden

platform kan också anropas direkt med hjälp av -m i tolken:

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

Följande alternativ accepteras:

--terse

Skriver ut kortfattad information om plattformen. Detta motsvarar att anropa platform.platform() med terse-argumentet satt till True.

--nonaliased

Skriv ut plattformsinformation utan aliasing av system/OS-namn. Detta motsvarar att anropa platform.platform() med argumentet aliased satt till True.

Du kan också skicka ett eller flera positionella argument (terse, nonaliased) för att uttryckligen styra utdataformatet. Dessa beter sig på samma sätt som motsvarande alternativ.

Diverse

platform.invalidate_caches()

Rensa ut den interna cachen med information, till exempel uname(). Detta är vanligtvis användbart när plattformens node() ändras av en extern process och man behöver hämta det uppdaterade värdet.

Tillagd i version 3.14.