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 anSystemExitübergeben.Auf der OpenMV Cam verursacht ein unbehandeltes
SystemExitderzeit 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 Funktionatexitgibt den zuvor von dieser Funktion gesetzten Wert zurück, der anfänglichNoneist.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 alstraceback.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-kompatiblestraceback-Modul findet sich inmicropython-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.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 (wiebytearray,listunddict), die von mehreren Threads gemeinsam genutzt werden, müssen explizit durch Sperren wie_thread.allocate_lockgeschü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 insys.pathfort.
- 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 stattdessensys.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 auchsys.ps2fü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 auchsys.ps1für die primäre Eingabeaufforderung.
- 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.