sys — funzioni specifiche del sistema

Questo modulo fornisce l’accesso a variabili e funzioni specifiche dell’interprete, inclusi gli argomenti della riga di comando, il percorso di ricerca dei moduli, gli stream standard e le informazioni sull’implementazione in esecuzione.

Funzioni

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

Termina il programma corrente con un dato codice di uscita. Internamente, questa funzione solleva un’eccezione SystemExit. Se viene fornito un argomento, il suo valore viene passato come argomento a SystemExit.

Sulla OpenMV Cam, un’eccezione SystemExit non gestita attualmente provoca un Soft reset di MicroPython.

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

Registra func affinché venga chiamata al momento della terminazione. func deve essere un oggetto chiamabile che non accetta argomenti, oppure None per disabilitare la chiamata. La funzione atexit restituirà il valore precedente impostato da questa funzione, che inizialmente è None.

Differenze rispetto a CPython

Questa funzione è un’estensione di MicroPython intesa a fornire funzionalità simili a quelle del modulo atexit in CPython.

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

Stampa un’eccezione con un traceback su un oggetto file-like file (oppure sys.stdout per impostazione predefinita).

Differenze rispetto a CPython

Questa è una versione semplificata di una funzione presente nel modulo traceback di CPython. A differenza di traceback.print_exception(), questa funzione accetta solo il valore dell’eccezione invece del tipo di eccezione, del valore dell’eccezione e dell’oggetto traceback; l’argomento file deve essere posizionale; ulteriori argomenti non sono supportati. Un modulo traceback compatibile con CPython si trova in micropython-lib.

sys.settrace(tracefunc: Callable | None) None

Abilita il tracciamento dell’esecuzione del bytecode. Per i dettagli vedere la documentazione di CPython.

Questa funzione non è disponibile sulla OpenMV Cam. È disabilitata per impostazione predefinita perché rallenta l’esecuzione del codice; per abilitarla è necessario compilare un firmware personalizzato.

Costanti

sys.argv: list[str]

Una lista modificabile degli argomenti con cui è stato avviato il programma corrente.

sys.byteorder: str

L’ordine dei byte del sistema ("little" o "big").

sys.implementation: object

Oggetto contenente informazioni sull’implementazione Python corrente. Per MicroPython, ha i seguenti attributi:

  • name - stringa «micropython»

  • version - tupla (major, minor, micro, releaselevel), ad esempio (1, 22, 0, “”)

  • _machine - stringa che descrive la macchina sottostante

  • _mpy - versione del formato di file mpy supportato (attributo opzionale)

  • _build - stringa che può aiutare a identificare la configurazione con cui MicroPython è stato compilato

  • _thread - attributo stringa opzionale, esiste se il target supporta il threading ed è «GIL» oppure «unsafe»

Questo oggetto è il modo consigliato per distinguere MicroPython da altre implementazioni di Python (si noti che potrebbe comunque non esistere nelle port più minimali).

A partire dalla versione 1.22.0-preview, il quarto nodo releaselevel in implementation.version è una stringa vuota oppure "preview".

La voce _build è stata aggiunta nella versione 1.25.0 ed è un insieme di elementi separati da trattini. In futuro potrebbero essere aggiunti nuovi elementi, quindi è preferibile accedere a questo campo usando sys.implementation._build.split("-"). Gli elementi attualmente utilizzati sono:

  • Sulla OpenMV Cam il primo elemento è il nome della scheda e il secondo elemento (se presente) è la variante della scheda.

La voce _thread è stata aggiunta nella versione 1.26.0 e, se esiste, il target dispone del modulo _thread. Se il target abilita il GIL (global interpreter lock) questo attributo è "GIL". Altrimenti l’attributo è "unsafe" e il target supporta il threading ma non abilita il GIL, e gli oggetti Python modificabili (come bytearray, list e dict) condivisi tra i thread devono essere protetti esplicitamente da lock come _thread.allocate_lock.

Differenze rispetto a CPython

CPython prevede più attributi per questo oggetto, ma in MicroPython è implementato il minimo indispensabile effettivamente utile.

sys.maxsize: int

Il valore massimo che un tipo intero nativo può contenere sulla piattaforma corrente, oppure il valore massimo rappresentabile dal tipo intero di MicroPython, se è inferiore al valore massimo della piattaforma (questo è il caso delle port di MicroPython senza supporto per gli interi long).

Questo attributo è utile per rilevare la «bitness» di una piattaforma (32-bit vs 64-bit, ecc.). Si consiglia di non confrontare questo attributo direttamente con un valore, ma di contare invece il numero di bit in esso contenuti:

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

Dizionario dei moduli caricati. Sulla OpenMV Cam questo non include i moduli integrati.

sys.path: list[str]

Una lista modificabile delle directory in cui cercare i moduli importati.

Differenze rispetto a CPython

In MicroPython, una voce con il valore ".frozen" indicherà che l’importazione dovrà cercare i moduli frozen in quel punto della ricerca. Se non viene trovato alcun modulo frozen, la ricerca non cercherà una directory chiamata .frozen, ma proseguirà con la voce successiva in sys.path.

sys.platform: str

La piattaforma su cui è in esecuzione MicroPython. Si tratta di una stringa definita dalla port/scheda – ad esempio "mimxrt" sulla OpenMV RT1060 e "alif" sulla OpenMV AE3 (alcune OpenMV Cam più vecchie riportano una stringa specifica del modello come "OpenMV4-H7"). Per verificare se il tuo programma viene eseguito su MicroPython (rispetto a un’altra implementazione di Python), usa invece sys.implementation.

sys.ps1: str

Attributo modificabile che contiene la stringa utilizzata per il prompt principale del REPL. Il valore predefinito fornisce il prompt standard di Python >>>. Vedere anche sys.ps2 per il prompt di continuazione.

sys.ps2: str

Attributo modificabile che contiene la stringa utilizzata per il prompt di continuazione del REPL. Il valore predefinito fornisce il prompt standard di Python .... Vedere anche sys.ps1 per il prompt principale.

sys.stderr: object

stream di errore standard.

sys.stdin: object

stream di input standard.

sys.stdout: object

stream di output standard.

sys.tracebacklimit: int

Attributo modificabile che contiene un valore intero pari al numero massimo di voci di traceback da memorizzare in un’eccezione. Impostare a 0 per disabilitare l’aggiunta dei traceback. Il valore predefinito è 1000.

Nota: questo attributo non è disponibile sulla OpenMV Cam.

sys.version: str

Versione del linguaggio Python a cui questa implementazione è conforme, come stringa.

sys.version_info: tuple

Versione del linguaggio Python a cui questa implementazione è conforme, come tupla di interi.

Differenze rispetto a CPython

Sono supportati solo i primi tre numeri di versione (major, minor, micro) e possono essere riferiti solo tramite indice, non tramite nome.