sys — funkcje specyficzne dla systemu

Ten moduł zapewnia dostęp do zmiennych i funkcji specyficznych dla interpretera, w tym argumentów wiersza poleceń, ścieżki wyszukiwania modułów, standardowych strumieni oraz informacji o uruchomionej implementacji.

Funkcje

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

Kończy bieżący program z podanym kodem wyjścia. Wewnętrznie funkcja ta zgłasza wyjątek SystemExit. Jeśli podano argument, jego wartość jest przekazywana jako argument do SystemExit.

Na OpenMV Cam nieobsłużony wyjątek SystemExit powoduje obecnie Miękki reset MicroPython.

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

Rejestruje funkcję func do wywołania po zakończeniu programu. func musi być obiektem wywoływalnym niewymagającym argumentów lub wartością None, aby wyłączyć wywołanie. Funkcja atexit zwraca poprzednią wartość ustawioną przez tę funkcję, która początkowo wynosi None.

Różnica względem CPython

Ta funkcja jest rozszerzeniem MicroPython, którego celem jest zapewnienie funkcjonalności podobnej do modułu atexit w CPython.

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

Wypisuje wyjątek wraz ze śladem wywołań do obiektu plikopodobnego file (lub domyślnie do sys.stdout).

Różnica względem CPython

Jest to uproszczona wersja funkcji występującej w module traceback w CPython. W przeciwieństwie do traceback.print_exception() funkcja ta przyjmuje jedynie wartość wyjątku, a nie typ wyjątku, wartość wyjątku i obiekt śladu wywołań; argument file powinien być pozycyjny; dalsze argumenty nie są obsługiwane. Zgodny z CPython moduł traceback można znaleźć w micropython-lib.

sys.settrace(tracefunc: Callable | None) None

Włącza śledzenie wykonywania kodu bajtowego. Szczegóły opisano w dokumentacji CPython.

Ta funkcja nie jest dostępna na OpenMV Cam. Jest domyślnie wyłączona, ponieważ spowalnia wykonywanie kodu; jej włączenie wymaga zbudowania niestandardowego oprogramowania układowego.

Stałe

sys.argv: list[str]

Modyfikowalna lista argumentów, z którymi został uruchomiony bieżący program.

sys.byteorder: str

Kolejność bajtów w systemie ("little" lub "big").

sys.implementation: object

Obiekt zawierający informacje o bieżącej implementacji Python. W przypadku MicroPython posiada następujące atrybuty:

  • name - łańcuch znaków „micropython”

  • version - krotka (major, minor, micro, releaselevel), np. (1, 22, 0, «»)

  • _machine - łańcuch znaków opisujący maszynę bazową

  • _mpy - obsługiwana wersja formatu pliku mpy (atrybut opcjonalny)

  • _build - łańcuch znaków pomagający zidentyfikować konfigurację, z którą zbudowano MicroPython

  • _thread - opcjonalny atrybut tekstowy, istnieje, jeśli platforma docelowa obsługuje wątki i ma wartość „GIL” lub „unsafe”

Ten obiekt jest zalecanym sposobem odróżnienia MicroPython od innych implementacji Python (należy pamiętać, że w bardzo minimalnych portach może on nadal nie istnieć).

Począwszy od wersji 1.22.0-preview, czwarty element releaselevel w implementation.version jest pustym łańcuchem znaków albo "preview".

Wpis _build został dodany w wersji 1.25.0 i jest zestawem elementów rozdzielonych myślnikami. W przyszłości mogą zostać dodane nowe elementy, dlatego najlepiej odwoływać się do tego pola za pomocą sys.implementation._build.split("-"). Aktualnie używane elementy to:

  • Na OpenMV Cam pierwszym elementem jest nazwa płytki, a drugim elementem (jeśli występuje) jest wariant płytki.

Wpis _thread został dodany w wersji 1.26.0 i jeśli istnieje, oznacza, że platforma docelowa posiada moduł _thread. Jeśli platforma docelowa włącza GIL (globalną blokadę interpretera), to atrybut ten ma wartość "GIL". W przeciwnym razie atrybut ma wartość "unsafe" i platforma docelowa obsługuje wątki, ale nie włącza GIL, a modyfikowalne obiekty Python (takie jak bytearray, list i dict) współdzielone między wątkami muszą być jawnie chronione blokadami takimi jak _thread.allocate_lock.

Różnica względem CPython

CPython wymaga większej liczby atrybutów dla tego obiektu, ale w MicroPython zaimplementowano faktycznie użyteczne minimum.

sys.maxsize: int

Maksymalna wartość, jaką natywny typ całkowitoliczbowy może przechować na bieżącej platformie, lub maksymalna wartość reprezentowalna przez typ całkowitoliczbowy MicroPython, jeśli jest ona mniejsza niż maksymalna wartość platformy (co ma miejsce w portach MicroPython bez obsługi typu long int).

Ten atrybut jest przydatny do wykrywania „bitowości” platformy (32-bitowa vs 64-bitowa itp.). Zaleca się, aby nie porównywać tego atrybutu bezpośrednio z jakąś wartością, lecz zamiast tego policzyć liczbę bitów w nim zawartych:

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

Słownik załadowanych modułów. Na OpenMV Cam nie obejmuje on modułów wbudowanych.

sys.path: list[str]

Modyfikowalna lista katalogów przeszukiwanych w poszukiwaniu importowanych modułów.

Różnica względem CPython

W MicroPython wpis o wartości ".frozen" wskazuje, że w tym miejscu wyszukiwania import powinien przeszukać zamrożone moduły. Jeśli żaden zamrożony moduł nie zostanie znaleziony, wyszukiwanie nie będzie szukać katalogu o nazwie .frozen, lecz przejdzie do następnego wpisu w sys.path.

sys.platform: str

Platforma, na której działa MicroPython. Jest to łańcuch znaków definiowany przez port/płytkę – na przykład "mimxrt" na OpenMV RT1060 oraz "alif" na OpenMV AE3 (niektóre starsze modele OpenMV Cam zgłaszają łańcuch znaków specyficzny dla modelu, taki jak "OpenMV4-H7"). Aby sprawdzić, czy Twój program działa na MicroPython (a nie na innej implementacji Python), użyj zamiast tego sys.implementation.

sys.ps1: str

Modyfikowalny atrybut zawierający łańcuch znaków używany jako podstawowy znak zachęty REPL. Wartość domyślna daje standardowy znak zachęty Python w postaci >>>. Zobacz także sys.ps2 dla znaku zachęty kontynuacji.

sys.ps2: str

Modyfikowalny atrybut zawierający łańcuch znaków używany jako znak zachęty kontynuacji REPL. Wartość domyślna daje standardowy znak zachęty Python w postaci .... Zobacz także sys.ps1 dla podstawowego znaku zachęty.

sys.stderr: object

Standardowy stream błędów.

sys.stdin: object

Standardowy stream wejścia.

sys.stdout: object

Standardowy stream wyjścia.

sys.tracebacklimit: int

Modyfikowalny atrybut zawierający wartość całkowitą będącą maksymalną liczbą wpisów śladu wywołań przechowywanych w wyjątku. Ustaw na 0, aby wyłączyć dodawanie śladów wywołań. Wartość domyślna to 1000.

Uwaga: ten atrybut nie jest dostępny na OpenMV Cam.

sys.version: str

Wersja języka Python, z którą zgodna jest ta implementacja, w postaci łańcucha znaków.

sys.version_info: tuple

Wersja języka Python, z którą zgodna jest ta implementacja, w postaci krotki liczb całkowitych.

Różnica względem CPython

Obsługiwane są tylko pierwsze trzy numery wersji (major, minor, micro) i można się do nich odwoływać wyłącznie przez indeks, a nie przez nazwę.