sys — funções específicas do sistema

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

Funções

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

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

Na OpenMV Cam, uma exceção SystemExit não tratada atualmente causa um Soft Reset do MicroPython.

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

Registra func para ser chamada no encerramento. func deve ser um objeto chamável que não recebe argumentos, ou None para desabilitar a chamada. A função atexit retornará o valor anterior definido por esta função, que inicialmente é None.

Diferença em relação ao CPython

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

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

Imprime a exceção com um traceback em um objeto semelhante a arquivo file (ou sys.stdout por padrão).

Diferença em relação ao CPython

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

sys.settrace(tracefunc: Callable | None) None

Habilita o rastreamento da execução de bytecode. Para detalhes, veja a documentação do CPython.

Esta função não está disponível na OpenMV Cam. Ela é desabilitada por padrão porque torna a execução do código mais lenta; habilitá-la requer a compilação de um firmware personalizado.

Constantes

sys.argv: list[str]

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

sys.byteorder: str

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

sys.implementation: object

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

  • name - string “micropython”

  • version - tupla (major, minor, micro, releaselevel), por exemplo (1, 22, 0, ‘’)

  • _machine - string que descreve a máquina subjacente

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

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

  • _thread - atributo string opcional, existe se o alvo possui threading e é “GIL” ou “unsafe”

Este objeto é a maneira recomendada de distinguir o MicroPython de outras implementações do Python (observe que ele ainda pode não existir nas portas muito mínimas).

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ífen. Novos elementos podem ser anexados no futuro, então é melhor acessar este campo usando 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, então o alvo possui o módulo _thread. Se o alvo habilita o GIL (global interpreter lock), então este atributo é "GIL". Caso contrário, o atributo é "unsafe" e o alvo possui threading, mas não habilita o GIL, e objetos Python mutáveis (como bytearray, list e dict) que são compartilhados entre threads devem ser protegidos explicitamente por travas como _thread.allocate_lock.

Diferença em relação ao CPython

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

sys.maxsize: int

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

Este atributo é útil para detectar o “bitness” de uma plataforma (32 bits vs 64 bits, etc.). Recomenda-se não comparar este atributo diretamente com algum 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 dos módulos carregados. Na OpenMV Cam, isso não inclui os módulos embutidos.

sys.path: list[str]

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

Diferença em relação ao CPython

No MicroPython, uma entrada com o valor ".frozen" indicará que a importação deve procurar módulos congelados naquele ponto da busca. Se nenhum módulo congelado for encontrado, a busca não procurará por um diretório chamado .frozen, em vez disso continuará com a próxima entrada em sys.path.

sys.platform: str

A plataforma na qual o MicroPython está sendo executado. Esta é uma string definida pela porta/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 é executado no MicroPython (versus outra implementação do Python), use sys.implementation em vez disso.

sys.ps1: str

Atributo mutável que contém a string usada para o prompt principal do REPL. O padrão fornece o prompt padrão do Python >>>. Veja também sys.ps2 para o prompt de continuação.

sys.ps2: str

Atributo mutável que contém a string usada para o prompt de continuação do REPL. O padrão fornece o prompt padrão do Python .... Veja também sys.ps1 para o prompt principal.

sys.stderr: object

Erro padrão stream.

sys.stdin: object

Entrada padrão stream.

sys.stdout: object

Saída padrão stream.

sys.tracebacklimit: int

Um atributo mutável que contém um valor inteiro que é o número máximo de entradas de traceback a armazenar em uma exceção. Defina como 0 para desabilitar a adição de tracebacks. O padrão é 1000.

Observação: 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 uma string.

sys.version_info: tuple

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

Diferença em relação ao CPython

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