sys — systemspezifische Funktionen

Dieses Modul bietet Zugriff auf interpreterspezifische Variablen und Funktionen, einschließlich Befehlszeilenargumenten, dem Modul-Suchpfad, den Standardstreams und Informationen über die laufende Implementierung.

Funktionen

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

Beendet das aktuelle Programm mit einem angegebenen Exit-Code. Intern löst diese Funktion eine SystemExit-Ausnahme aus. Wenn ein Argument angegeben wird, wird dessen Wert als Argument an SystemExit übergeben.

Auf der OpenMV Cam verursacht ein unbehandeltes SystemExit derzeit einen Soft-Reset von MicroPython.

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

Registriert func, um beim Beenden aufgerufen zu werden. func muss ein aufrufbares Objekt sein, das keine Argumente entgegennimmt, oder None, um den Aufruf zu deaktivieren. Die Funktion atexit gibt den zuvor von dieser Funktion gesetzten Wert zurück, der anfänglich None ist.

Unterschied zu CPython

Diese Funktion ist eine MicroPython-Erweiterung, die eine ähnliche Funktionalität wie das atexit-Modul in CPython bereitstellen soll.

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

Gibt eine Ausnahme mit einem Traceback auf ein dateiähnliches Objekt file aus (oder standardmäßig auf sys.stdout).

Unterschied zu CPython

Dies ist eine vereinfachte Version einer Funktion, die im traceback-Modul von CPython vorkommt. Anders als traceback.print_exception() nimmt diese Funktion nur den Ausnahmewert entgegen statt Ausnahmetyp, Ausnahmewert und Traceback-Objekt; das Argument file sollte positional sein; weitere Argumente werden nicht unterstützt. Ein CPython-kompatibles traceback-Modul findet sich in micropython-lib.

sys.settrace(tracefunc: Callable | None) None

Aktiviert das Tracing der Bytecode-Ausführung. Einzelheiten dazu finden Sie in der CPython-Dokumentation.

Diese Funktion ist auf der OpenMV Cam nicht verfügbar. Sie ist standardmäßig deaktiviert, da sie die Codeausführung verlangsamt; um sie zu aktivieren, muss eine benutzerdefinierte Firmware erstellt werden.

Konstanten

sys.argv: list[str]

Eine veränderbare Liste der Argumente, mit denen das aktuelle Programm gestartet wurde.

sys.byteorder: str

Die Bytereihenfolge des Systems ("little" oder "big").

sys.implementation: object

Objekt mit Informationen über die aktuelle Python-Implementierung. Für MicroPython hat es die folgenden Attribute:

  • name - Zeichenkette „micropython“

  • version - Tupel (major, minor, micro, releaselevel), z. B. (1, 22, 0, ‚‘)

  • _machine - Zeichenkette, die die zugrunde liegende Maschine beschreibt

  • _mpy - unterstützte Version des mpy-Dateiformats (optionales Attribut)

  • _build - Zeichenkette, die helfen kann, die Konfiguration zu identifizieren, mit der MicroPython erstellt wurde

  • _thread - optionales Zeichenketten-Attribut, vorhanden, wenn das Ziel Threading unterstützt, und entweder „GIL“ oder „unsafe“

Dieses Objekt ist die empfohlene Methode, um MicroPython von anderen Python-Implementierungen zu unterscheiden (beachten Sie, dass es in den sehr minimalen Ports möglicherweise dennoch nicht existiert).

Ab Version 1.22.0-preview ist der vierte Knoten releaselevel in implementation.version entweder eine leere Zeichenkette oder "preview".

Der Eintrag _build wurde in Version 1.25.0 hinzugefügt und ist ein durch Bindestriche getrennter Satz von Elementen. In Zukunft können neue Elemente angehängt werden, daher ist es am besten, auf dieses Feld mit sys.implementation._build.split("-") zuzugreifen. Die derzeit verwendeten Elemente sind:

  • Auf der OpenMV Cam ist das erste Element der Board-Name und das zweite Element (falls vorhanden) die Board-Variante.

Der Eintrag _thread wurde in Version 1.26.0 hinzugefügt, und wenn er existiert, verfügt das Ziel über das _thread-Modul. Wenn das Ziel die GIL (Global Interpreter Lock) aktiviert, ist dieses Attribut "GIL". Andernfalls ist das Attribut "unsafe" und das Ziel verfügt über Threading, aktiviert jedoch nicht die GIL, und veränderbare Python-Objekte (wie bytearray, list und dict), die von mehreren Threads gemeinsam genutzt werden, müssen explizit durch Sperren wie _thread.allocate_lock geschützt werden.

Unterschied zu CPython

CPython schreibt mehr Attribute für dieses Objekt vor, aber das tatsächlich nützliche absolute Minimum ist in MicroPython implementiert.

sys.maxsize: int

Der maximale Wert, den ein nativer Integer-Typ auf der aktuellen Plattform aufnehmen kann, oder der maximale durch den MicroPython-Integer-Typ darstellbare Wert, falls dieser kleiner als der Plattform-Maximalwert ist (das ist der Fall bei MicroPython-Ports ohne Unterstützung für lange Ganzzahlen).

Dieses Attribut ist nützlich, um die „Bitbreite“ einer Plattform zu erkennen (32-Bit vs. 64-Bit usw.). Es wird empfohlen, dieses Attribut nicht direkt mit einem bestimmten Wert zu vergleichen, sondern stattdessen die Anzahl der Bits darin zu zählen:

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

Wörterbuch der geladenen Module. Auf der OpenMV Cam umfasst dies keine eingebauten Module.

sys.path: list[str]

Eine veränderbare Liste von Verzeichnissen, in denen nach importierten Modulen gesucht wird.

Unterschied zu CPython

In MicroPython gibt ein Eintrag mit dem Wert ".frozen" an, dass der Import an dieser Stelle der Suche nach eingefrorenen Modulen suchen soll. Wird kein eingefrorenes Modul gefunden, sucht die Suche nicht nach einem Verzeichnis namens .frozen, sondern fährt mit dem nächsten Eintrag in sys.path fort.

sys.platform: str

Die Plattform, auf der MicroPython läuft. Dies ist eine port-/board-definierte Zeichenkette – zum Beispiel "mimxrt" auf der OpenMV RT1060 und "alif" auf der OpenMV AE3 (einige ältere OpenMV Cams melden eine modellspezifische Zeichenkette wie "OpenMV4-H7"). Um zu prüfen, ob Ihr Programm auf MicroPython läuft (im Gegensatz zu einer anderen Python-Implementierung), verwenden Sie stattdessen sys.implementation.

sys.ps1: str

Veränderbares Attribut, das die Zeichenkette enthält, die für die primäre REPL-Eingabeaufforderung verwendet wird. Die Vorgabe ergibt die Standard-Python-Eingabeaufforderung >>>. Siehe auch sys.ps2 für die Fortsetzungs-Eingabeaufforderung.

sys.ps2: str

Veränderbares Attribut, das die Zeichenkette enthält, die für die Fortsetzungs-Eingabeaufforderung der REPL verwendet wird. Die Vorgabe ergibt die Standard-Python-Eingabeaufforderung .... Siehe auch sys.ps1 für die primäre Eingabeaufforderung.

sys.stderr: object

Standardfehler-stream.

sys.stdin: object

Standardeingabe-stream.

sys.stdout: object

Standardausgabe-stream.

sys.tracebacklimit: int

Ein veränderbares Attribut, das einen ganzzahligen Wert enthält, der die maximale Anzahl der in einer Ausnahme zu speichernden Traceback-Einträge angibt. Auf 0 setzen, um das Hinzufügen von Tracebacks zu deaktivieren. Standardwert ist 1000.

Hinweis: Dieses Attribut ist auf der OpenMV Cam nicht verfügbar.

sys.version: str

Die Version der Python-Sprache, der diese Implementierung entspricht, als Zeichenkette.

sys.version_info: tuple

Die Version der Python-Sprache, der diese Implementierung entspricht, als Tupel von Ganzzahlen.

Unterschied zu CPython

Es werden nur die ersten drei Versionsnummern (major, minor, micro) unterstützt, und sie können nur über den Index referenziert werden, nicht über den Namen.