sys — funkcije specifične za sustav

Ovaj modul omogućuje pristup varijablama i funkcijama specifičnima za interpreter, uključujući argumente naredbenog retka, putanju za pretraživanje modula, standardne tokove te informacije o implementaciji koja se izvodi.

Funkcije

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

Prekida trenutni program s navedenim izlaznim kodom. Interno ova funkcija podiže iznimku SystemExit. Ako je naveden argument, njegova se vrijednost prosljeđuje kao argument iznimci SystemExit.

Na OpenMV Cam, neuhvaćena iznimka SystemExit trenutno uzrokuje Meko resetiranje MicroPythona.

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

Registrira func da bude pozvan prilikom prekida. func mora biti pozivljiv objekt koji ne prima argumente, ili None za onemogućavanje poziva. Funkcija atexit vratit će prethodnu vrijednost koju je postavila ova funkcija, koja je u početku None.

Razlika u odnosu na CPython

Ova funkcija je MicroPython proširenje namijenjeno pružanju funkcionalnosti slične modulu atexit u CPythonu.

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

Ispisuje iznimku s tragom izvođenja (traceback) u objekt sličan datoteci file (ili sys.stdout po zadanome).

Razlika u odnosu na CPython

Ovo je pojednostavljena verzija funkcije koja se pojavljuje u modulu traceback u CPythonu. Za razliku od traceback.print_exception(), ova funkcija prima samo vrijednost iznimke umjesto tipa iznimke, vrijednosti iznimke i objekta traga izvođenja; argument file trebao bi biti pozicijski; daljnji argumenti nisu podržani. Modul traceback kompatibilan s CPythonom može se pronaći u micropython-lib.

sys.settrace(tracefunc: Callable | None) None

Omogućuje praćenje izvođenja bytecodea. Za detalje pogledajte CPython dokumentaciju.

Ova funkcija nije dostupna na OpenMV Cam. Onemogućena je po zadanome jer usporava izvođenje koda; njezino omogućavanje zahtijeva izgradnju prilagođenog ugrađenog programa (firmware).

Konstante

sys.argv: list[str]

Promjenjiva lista argumenata s kojima je trenutni program pokrenut.

sys.byteorder: str

Redoslijed bajtova sustava ("little" ili "big").

sys.implementation: object

Objekt s informacijama o trenutnoj Python implementaciji. Za MicroPython ima sljedeće atribute:

  • name - niz znakova „micropython”

  • version - n-torka (major, minor, micro, releaselevel), npr. (1, 22, 0, ‘’)

  • _machine - niz znakova koji opisuje pripadni stroj

  • _mpy - podržana verzija formata mpy datoteke (neobavezan atribut)

  • _build - niz znakova koji može pomoći u identifikaciji konfiguracije s kojom je MicroPython izgrađen

  • _thread - neobavezan atribut niza znakova, postoji ako ciljna platforma podržava dretve i ima vrijednost „GIL” ili „unsafe”

Ovaj objekt je preporučeni način za razlikovanje MicroPythona od drugih Python implementacija (imajte na umu da možda i dalje neće postojati u vrlo minimalnim portovima).

Počevši od verzije 1.22.0-preview, četvrti čvor releaselevel u implementation.version je ili prazan niz znakova ili "preview".

Unos _build dodan je u verziji 1.25.0 i predstavlja skup elemenata odvojenih crticama. Novi elementi mogu se dodavati u budućnosti pa je najbolje pristupati ovom polju pomoću sys.implementation._build.split("-"). Elementi koji se trenutno koriste su:

  • Na OpenMV Cam prvi element je naziv pločice, a drugi element (ako postoji) je varijanta pločice.

Unos _thread dodan je u verziji 1.26.0 i ako postoji, tada ciljna platforma ima modul _thread. Ako ciljna platforma omogućuje GIL (globalni interpreterski zaključ), tada ovaj atribut ima vrijednost "GIL". U suprotnom atribut ima vrijednost "unsafe" i ciljna platforma podržava dretve, ali ne omogućuje GIL, te se promjenjivi Python objekti (poput bytearray, list i dict) koji se dijele među dretvama moraju eksplicitno zaštititi zaključima poput _thread.allocate_lock.

Razlika u odnosu na CPython

CPython propisuje više atributa za ovaj objekt, ali u MicroPythonu je implementiran stvarno koristan nužni minimum.

sys.maxsize: int

Najveća vrijednost koju nativni cjelobrojni tip može sadržavati na trenutnoj platformi, ili najveća vrijednost koju može predstaviti MicroPython cjelobrojni tip, ako je manja od maksimalne vrijednosti platforme (što je slučaj kod MicroPython portova bez podrške za long int).

Ovaj atribut je koristan za otkrivanje „bitnosti” platforme (32-bitna naspram 64-bitne itd.). Preporučuje se ne uspoređivati ovaj atribut izravno s nekom vrijednošću, već umjesto toga prebrojati broj bitova u njemu:

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

Rječnik učitanih modula. Na OpenMV Cam to ne uključuje ugrađene module.

sys.path: list[str]

Promjenjiva lista direktorija u kojima se traže uvezeni moduli.

Razlika u odnosu na CPython

U MicroPythonu unos s vrijednošću ".frozen" označava da pretraživanje pri uvozu treba potražiti zamrznute module na tom mjestu u pretrazi. Ako se ne pronađe zamrznuti modul, pretraga neće tražiti direktorij naziva .frozen, već će nastaviti sa sljedećim unosom u sys.path.

sys.platform: str

Platforma na kojoj se MicroPython izvodi. Ovo je niz znakova definiran portom/pločicom – na primjer "mimxrt" na OpenMV RT1060 i "alif" na OpenMV AE3 (neke starije OpenMV Cam izvještavaju niz znakova specifičan za model poput "OpenMV4-H7"). Za provjeru izvodi li se vaš program na MicroPythonu (naspram druge Python implementacije), umjesto toga koristite sys.implementation.

sys.ps1: str

Promjenjivi atribut koji sadrži niz znakova koji se koristi za primarni REPL upit. Zadana vrijednost daje standardni Python upit >>>. Pogledajte i sys.ps2 za upit za nastavak.

sys.ps2: str

Promjenjivi atribut koji sadrži niz znakova koji se koristi za REPL upit za nastavak. Zadana vrijednost daje standardni Python upit .... Pogledajte i sys.ps1 za primarni upit.

sys.stderr: object

Standardni stream za pogreške.

sys.stdin: object

Standardni ulazni stream.

sys.stdout: object

Standardni izlazni stream.

sys.tracebacklimit: int

Promjenjivi atribut koji sadrži cjelobrojnu vrijednost koja predstavlja najveći broj unosa traga izvođenja koji se pohranjuju u iznimci. Postavite na 0 za onemogućavanje dodavanja tragova izvođenja. Zadana vrijednost je 1000.

Napomena: ovaj atribut nije dostupan na OpenMV Cam.

sys.version: str

Verzija Python jezika kojoj je ova implementacija usklađena, kao niz znakova.

sys.version_info: tuple

Verzija Python jezika kojoj je ova implementacija usklađena, kao n-torka cijelih brojeva.

Razlika u odnosu na CPython

Podržana su samo prva tri broja verzije (major, minor, micro) i na njih se može referirati samo putem indeksa, a ne putem naziva.