sys — funções específicas do sistema

Este módulo fornece acesso a variáveis e funções específicas do interpretador, incluindo argumentos da linha de comandos, o caminho de pesquisa de módulos, streams padrão e informações sobre a implementação em execução.

Funções

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

Termina o programa atual com um código de saída indicado. Internamente, esta função lança uma exceção SystemExit. Se for fornecido um argumento, o seu valor é passado como argumento a SystemExit.

Na OpenMV Cam, uma SystemExit não tratada provoca atualmente um Reset suave do MicroPython.

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

Regista func para ser chamada aquando da terminação. func deve ser um callable sem argumentos, ou None para desativar a chamada. A função atexit devolve o valor anterior definido por esta função, que inicialmente é None.

Diferença para o CPython

Esta função é uma extensão do MicroPython destinada a fornecer funcionalidade semelhante ao módulo atexit do CPython.

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

Imprime a exceção com um traceback para um objeto semelhante a ficheiro file (ou sys.stdout por omissão).

Diferença para o CPython

Esta é uma versão simplificada de uma função que existe no módulo traceback do CPython. Ao contrário de traceback.print_exception(), esta função recebe apenas o valor da exceção em vez do tipo de exceção, valor de exceção e objeto traceback; o argumento file deve ser posicional; não são suportados argumentos adicionais. O módulo traceback compatível com CPython pode ser encontrado em micropython-lib.

sys.settrace(tracefunc: Callable | None) None

Ativa o rastreio da execução de bytecode. Para mais detalhes, consulte a documentação do CPython.

Esta função não está disponível na OpenMV Cam. Está desativada por omissão porque abranda a execução do código; para a ativar é necessário compilar firmware personalizado.

Constantes

sys.argv: list[str]

Uma lista mutável de argumentos com que o programa atual foi iniciado.

sys.byteorder: str

A ordem de bytes do sistema ("little" ou "big").

sys.implementation: object

Objeto com informações sobre a implementação Python atual. Para o MicroPython, possui os seguintes atributos:

  • name - string «micropython»

  • version - tuplo (major, minor, micro, releaselevel), por ex. (1, 22, 0, “”)

  • _machine - string que descreve a máquina subjacente

  • _mpy - versão do formato de ficheiro mpy suportada (atributo opcional)

  • _build - string que pode ajudar a identificar a configuração com que o MicroPython foi compilado

  • _thread - atributo string opcional, existe se o destino suportar threading e é «GIL» ou «unsafe»

Este objeto é a forma recomendada de distinguir o MicroPython de outras implementações Python (note que pode não existir em ports minimais).

A partir da versão 1.22.0-preview, o quarto nó releaselevel em implementation.version é uma string vazia ou "preview".

A entrada _build foi adicionada na versão 1.25.0 e é um conjunto de elementos separados por hífenes. Podem ser adicionados novos elementos no futuro, pelo que é preferível aceder a este campo com sys.implementation._build.split("-"). Os elementos atualmente utilizados são:

  • Na OpenMV Cam, o primeiro elemento é o nome da placa e o segundo elemento (se presente) é a variante da placa.

A entrada _thread foi adicionada na versão 1.26.0 e, se existir, o destino tem o módulo _thread. Se o destino ativar o GIL (global interpreter lock), este atributo é "GIL". Caso contrário, o atributo é "unsafe" e o destino tem threading mas não ativa o GIL; os objetos Python mutáveis (como bytearray, list e dict) partilhados entre threads devem ser protegidos explicitamente por bloqueios como _thread.allocate_lock.

Diferença para o CPython

O CPython exige mais atributos para este objeto, mas o mínimo útil está implementado no MicroPython.

sys.maxsize: int

Valor máximo que um tipo inteiro nativo pode conter na plataforma atual, ou valor máximo representável pelo tipo inteiro do MicroPython, se for menor que o valor máximo da plataforma (é o caso dos ports MicroPython sem suporte de inteiros longos).

Este atributo é útil para detetar o «número de bits» de uma plataforma (32 bits vs 64 bits, etc.). Recomenda-se não comparar este atributo diretamente com um valor, mas sim contar o número de bits nele:

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

Dicionário de módulos carregados. Na OpenMV Cam, não inclui módulos embutidos.

sys.path: list[str]

Uma lista mutável de diretórios onde procurar módulos importados.

Diferença para o CPython

No MicroPython, uma entrada com o valor ".frozen" indica que a importação deve pesquisar módulos frozen nesse ponto da pesquisa. Se não for encontrado nenhum módulo frozen, a pesquisa não procurará um diretório chamado .frozen, continuando com a próxima entrada em sys.path.

sys.platform: str

A plataforma em que o MicroPython está a ser executado. Esta é uma string definida pelo port/placa – por exemplo "mimxrt" na OpenMV RT1060 e "alif" na OpenMV AE3 (algumas OpenMV Cams mais antigas reportam uma string específica do modelo, como "OpenMV4-H7"). Para verificar se o seu programa está a ser executado no MicroPython (em vez de outra implementação Python), use sys.implementation.

sys.ps1: str

Atributo mutável que contém a string usada como prompt primário do REPL. Por omissão, fornece o prompt Python padrão >>>. Veja também sys.ps2 para o prompt de continuação.

sys.ps2: str

Atributo mutável que contém a string usada como prompt de continuação do REPL. Por omissão, fornece o prompt Python padrão .... Veja também sys.ps1 para o prompt primário.

sys.stderr: object

stream de erro padrão.

sys.stdin: object

stream de entrada padrão.

sys.stdout: object

stream de saída padrão.

sys.tracebacklimit: int

Atributo mutável que contém um valor inteiro correspondente ao número máximo de entradas de traceback a armazenar numa exceção. Defina como 0 para desativar a adição de tracebacks. O valor por omissão é 1000.

Nota: este atributo não está disponível na OpenMV Cam.

sys.version: str

Versão da linguagem Python à qual esta implementação está em conformidade, como string.

sys.version_info: tuple

Versão da linguagem Python à qual esta implementação está em conformidade, como tuplo de inteiros.

Diferença para o CPython

Apenas os três primeiros números de versão (major, minor, micro) são suportados e podem ser referenciados apenas por índice, não por nome.