sys — funkce specifické pro systém

Tento modul poskytuje přístup k proměnným a funkcím specifickým pro interpret, včetně argumentů příkazové řádky, vyhledávací cesty modulů, standardních streamů a informací o běžící implementaci.

Funkce

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

Ukončí aktuální program s daným návratovým kódem. Tato funkce v podstatě vyvolá výjimku SystemExit. Pokud je zadán argument, jeho hodnota se předá jako argument výjimce SystemExit.

Na OpenMV Cam neošetřená výjimka SystemExit aktuálně způsobí Měkký reset MicroPythonu.

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

Zaregistruje funkci func, která se má zavolat při ukončení. func musí být volatelný objekt, který nepřijímá žádné argumenty, nebo None pro zakázání volání. Funkce atexit vrátí předchozí hodnotu nastavenou touto funkcí, která je na začátku None.

Rozdíl oproti CPythonu

Tato funkce je rozšíření MicroPythonu, jehož cílem je poskytnout funkcionalitu podobnou modulu atexit v CPythonu.

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

Vytiskne výjimku spolu s tracebackem do objektu podobného souboru file (nebo ve výchozím nastavení do sys.stdout).

Rozdíl oproti CPythonu

Toto je zjednodušená verze funkce, která se v CPythonu nachází v modulu traceback. Na rozdíl od traceback.print_exception() přijímá tato funkce pouze hodnotu výjimky namísto typu výjimky, hodnoty výjimky a objektu traceback; argument file by měl být poziční; další argumenty nejsou podporovány. Modul traceback kompatibilní s CPythonem lze nalézt v micropython-lib.

sys.settrace(tracefunc: Callable | None) None

Povolí trasování provádění bytecode. Podrobnosti viz dokumentace CPythonu.

Tato funkce není na OpenMV Cam dostupná. Ve výchozím nastavení je zakázána, protože zpomaluje provádění kódu; její povolení vyžaduje sestavení vlastního firmwaru.

Konstanty

sys.argv: list[str]

Měnitelný seznam argumentů, se kterými byl aktuální program spuštěn.

sys.byteorder: str

Pořadí bajtů systému ("little" nebo "big").

sys.implementation: object

Objekt s informacemi o aktuální implementaci Pythonu. U MicroPythonu má následující atributy:

  • name - řetězec „micropython“

  • version - n-tice (major, minor, micro, releaselevel), např. (1, 22, 0, ‚‘)

  • _machine - řetězec popisující podkladový stroj

  • _mpy - podporovaná verze formátu souboru mpy (volitelný atribut)

  • _build - řetězec, který může pomoci identifikovat konfiguraci, se kterou byl MicroPython sestaven

  • _thread - volitelný řetězcový atribut, existuje, pokud cíl podporuje vlákna, a je buď „GIL“, nebo „unsafe“

Tento objekt je doporučený způsob, jak odlišit MicroPython od jiných implementací Pythonu (mějte na paměti, že ve velmi minimálních portech nemusí existovat).

Počínaje verzí 1.22.0-preview je čtvrtý prvek releaselevel v implementation.version buď prázdný řetězec, nebo "preview".

Položka _build byla přidána ve verzi 1.25.0 a je to sada prvků oddělených pomlčkami. V budoucnu mohou být přidávány nové prvky, takže je nejlepší přistupovat k tomuto poli pomocí sys.implementation._build.split("-"). Prvky, které se aktuálně používají, jsou:

  • Na OpenMV Cam je prvním prvkem název desky a druhým prvkem (pokud je přítomen) varianta desky.

Položka _thread byla přidána ve verzi 1.26.0 a pokud existuje, pak cíl obsahuje modul _thread. Pokud cíl povoluje GIL (global interpreter lock), pak má tento atribut hodnotu "GIL". Jinak má atribut hodnotu "unsafe" a cíl podporuje vlákna, ale nepovoluje GIL, a měnitelné objekty Pythonu (jako jsou bytearray, list a dict) sdílené mezi vlákny musí být explicitně chráněny zámky, jako je _thread.allocate_lock.

Rozdíl oproti CPythonu

CPython pro tento objekt vyžaduje více atributů, ale v MicroPythonu je implementováno skutečně užitečné nezbytné minimum.

sys.maxsize: int

Maximální hodnota, kterou může na aktuální platformě uchovat nativní celočíselný typ, nebo maximální hodnota reprezentovatelná celočíselným typem MicroPythonu, pokud je menší než maximální hodnota platformy (což je případ portů MicroPythonu bez podpory long int).

Tento atribut je užitečný pro zjištění „bitovosti“ platformy (32bitová vs 64bitová atd.). Doporučuje se neporovnávat tento atribut přímo s nějakou hodnotou, ale místo toho spočítat počet bitů v něm:

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

Slovník načtených modulů. Na OpenMV Cam nezahrnuje vestavěné moduly.

sys.path: list[str]

Měnitelný seznam adresářů, ve kterých se vyhledávají importované moduly.

Rozdíl oproti CPythonu

V MicroPythonu položka s hodnotou ".frozen" značí, že import by měl v tomto bodě vyhledávání hledat zmrazené moduly. Pokud žádný zmrazený modul není nalezen, vyhledávání nebude hledat adresář s názvem .frozen, místo toho bude pokračovat další položkou v sys.path.

sys.platform: str

Platforma, na které MicroPython běží. Jedná se o řetězec definovaný portem/deskou – například "mimxrt" na OpenMV RT1060 a "alif" na OpenMV AE3 (některé starší OpenMV Cam hlásí řetězec specifický pro model, například "OpenMV4-H7"). Chcete-li ověřit, zda váš program běží na MicroPythonu (oproti jiné implementaci Pythonu), použijte místo toho sys.implementation.

sys.ps1: str

Měnitelný atribut obsahující řetězec použitý pro hlavní výzvu REPL. Výchozí hodnota dává standardní výzvu Pythonu >>>. Viz také sys.ps2 pro výzvu pokračování.

sys.ps2: str

Měnitelný atribut obsahující řetězec použitý pro výzvu pokračování REPL. Výchozí hodnota dává standardní výzvu Pythonu .... Viz také sys.ps1 pro hlavní výzvu.

sys.stderr: object

Standardní chybový stream.

sys.stdin: object

Standardní vstupní stream.

sys.stdout: object

Standardní výstupní stream.

sys.tracebacklimit: int

Měnitelný atribut obsahující celočíselnou hodnotu, která udává maximální počet položek tracebacku ukládaných do výjimky. Nastavením na 0 zakážete přidávání tracebacků. Výchozí hodnota je 1000.

Poznámka: tento atribut není na OpenMV Cam dostupný.

sys.version: str

Verze jazyka Python, které tato implementace odpovídá, jako řetězec.

sys.version_info: tuple

Verze jazyka Python, které tato implementace odpovídá, jako n-tice celých čísel.

Rozdíl oproti CPythonu

Podporována jsou pouze první tři čísla verze (major, minor, micro) a lze na ně odkazovat pouze podle indexu, nikoli podle názvu.