sys — systemspecifika funktioner

Denna modul ger tillgång till tolkspecifika variabler och funktioner, inklusive kommandoradsargument, sökvägen för moduler, standardströmmar och information om den körande implementationen.

Funktioner

sys.exit(retval: object = 0, /) NoReturn

Avsluta det aktuella programmet med en given avslutningskod. I grunden utlöser denna funktion ett SystemExit-undantag. Om ett argument anges används dess värde som argument till SystemExit.

På OpenMV Cam orsakar ett ohanterat SystemExit för närvarande en Mjuk återställning av MicroPython.

sys.atexit(func: Callable[[], None] | None) Callable[[], None] | None

Registrerar func för att anropas vid avslutning. func måste vara ett anropbart objekt som inte tar några argument, eller None för att inaktivera anropet. Funktionen atexit returnerar det tidigare värdet som angetts av denna funktion, vilket inledningsvis är None.

Skillnad mot CPython

Denna funktion är ett MicroPython-tillägg som är avsett att tillhandahålla liknande funktionalitet som modulen atexit i CPython.

sys.print_exception(exc: BaseException, file: Any = sys.stdout, /) None

Skriver ut ett undantag med en spårning (traceback) till ett filliknande objekt file (eller sys.stdout som standard).

Skillnad mot CPython

Detta är en förenklad version av en funktion som finns i modulen traceback i CPython. Till skillnad från traceback.print_exception() tar denna funktion enbart undantagsvärdet i stället för undantagstyp, undantagsvärde och spårningsobjekt; argumentet file ska vara positionellt; ytterligare argument stöds inte. En CPython-kompatibel traceback-modul finns i micropython-lib.

sys.settrace(tracefunc: Callable | None) None

Aktiverar spårning av bytecode-exekvering. För detaljer, se CPython-dokumentationen.

Denna funktion är inte tillgänglig på OpenMV Cam. Den är inaktiverad som standard eftersom den saktar ner kodexekveringen; för att aktivera den krävs att man bygger anpassad fast programvara.

Konstanter

sys.argv: list[str]

En muterbar lista över de argument som det aktuella programmet startades med.

sys.byteorder: str

Systemets byteordning ("little" eller "big").

sys.implementation: object

Objekt med information om den aktuella Python-implementationen. För MicroPython har det följande attribut:

  • name - strängen ”micropython”

  • version - tupel (major, minor, micro, releaselevel), t.ex. (1, 22, 0, ’’)

  • _machine - sträng som beskriver den underliggande maskinen

  • _mpy - den mpy-filformatsversion som stöds (valfritt attribut)

  • _build - sträng som kan hjälpa till att identifiera den konfiguration som MicroPython byggdes med

  • _thread - valfritt strängattribut, finns om målet har trådning och är antingen ”GIL” eller ”unsafe”

Detta objekt är det rekommenderade sättet att skilja MicroPython från andra Python-implementationer (observera att det fortfarande kanske inte finns i de allra minimalaste portarna).

Från och med version 1.22.0-preview är den fjärde noden releaselevel i implementation.version antingen en tom sträng eller "preview".

Posten _build lades till i version 1.25.0 och är en bindestreckseparerad uppsättning element. Nya element kan komma att läggas till i framtiden, så det är bäst att komma åt detta fält med sys.implementation._build.split("-"). De element som för närvarande används är:

  • På OpenMV Cam är det första elementet kortnamnet och det andra elementet (om det finns) kortvarianten.

Posten _thread lades till i version 1.26.0 och om den finns har målet modulen _thread. Om målet aktiverar GIL (global interpreter lock) är detta attribut "GIL". Annars är attributet "unsafe" och målet har trådning men aktiverar inte GIL, och muterbara Python-objekt (såsom bytearray, list och dict) som delas mellan trådar måste skyddas explicit med lås som _thread.allocate_lock.

Skillnad mot CPython

CPython kräver fler attribut för detta objekt, men det faktiskt användbara minimum är implementerat i MicroPython.

sys.maxsize: int

Maxvärdet som en inbyggd heltalstyp kan rymma på den aktuella plattformen, eller det maxvärde som kan representeras av MicroPythons heltalstyp, om det är mindre än plattformens maxvärde (vilket är fallet för MicroPython-portar utan stöd för long int).

Detta attribut är användbart för att upptäcka en plattforms ”bitness” (32-bitars kontra 64-bitars osv.). Det rekommenderas att inte jämföra detta attribut direkt med något värde, utan i stället räkna antalet bitar i det:

bits = 0
v = sys.maxsize
while v:
    bits += 1
    v >>= 1
if bits > 32:
    # 64-bit (or more) platform
    ...
else:
    # 32-bit (or less) platform
    # Note that on 32-bit platform, value of bits may be less than 32
    # (e.g. 31) due to peculiarities described above, so use "> 16",
    # "> 32", "> 64" style of comparisons.
sys.modules: dict

Ordlista över inlästa moduler. På OpenMV Cam inkluderar denna inte inbyggda moduler.

sys.path: list[str]

En muterbar lista över kataloger att söka i efter importerade moduler.

Skillnad mot CPython

I MicroPython indikerar en post med värdet ".frozen" att importen ska söka efter frozen modules vid den punkten i sökningen. Om ingen frozen module hittas kommer sökningen inte att leta efter en katalog med namnet .frozen, utan i stället fortsätta med nästa post i sys.path.

sys.platform: str

Den plattform som MicroPython körs på. Detta är en port-/kortdefinierad sträng – till exempel "mimxrt" på OpenMV RT1060 och "alif" på OpenMV AE3 (vissa äldre OpenMV Cams rapporterar en modellspecifik sträng som "OpenMV4-H7"). För att kontrollera om ditt program körs på MicroPython (kontra en annan Python-implementation), använd sys.implementation i stället.

sys.ps1: str

Muterbart attribut som innehåller strängen som används för den primära REPL-prompten. Standardvärdet ger den vanliga Python-prompten >>>. Se även sys.ps2 för fortsättningsprompten.

sys.ps2: str

Muterbart attribut som innehåller strängen som används för REPL-fortsättningsprompten. Standardvärdet ger den vanliga Python-prompten .... Se även sys.ps1 för den primära prompten.

sys.stderr: object

Standardfelström (stream).

sys.stdin: object

Standardinström (stream).

sys.stdout: object

Standardutström (stream).

sys.tracebacklimit: int

Ett muterbart attribut som innehåller ett heltalsvärde som anger det maximala antalet spårningsposter som ska lagras i ett undantag. Sätt till 0 för att inaktivera tillägg av spårningar. Standardvärdet är 1000.

Obs: detta attribut är inte tillgängligt på OpenMV Cam.

sys.version: str

Den version av Python-språket som denna implementation överensstämmer med, som en sträng.

sys.version_info: tuple

Den version av Python-språket som denna implementation överensstämmer med, som en tupel av heltal.

Skillnad mot CPython

Endast de tre första versionsnumren (major, minor, micro) stöds och de kan endast refereras via index, inte via namn.