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 paraSystemExit.Na OpenMV Cam, uma exceção
SystemExitnã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
Nonepara desabilitar a chamada. A funçãoatexitretornará 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
atexitno 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.stdoutpor padrão).Diferença em relação ao CPython
Esta é uma versão simplificada de uma função que aparece no módulo
tracebackdo CPython. Diferentemente detraceback.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ódulotracebackcompatível com CPython pode ser encontrado emmicropython-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.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 (comobytearray,listedict) 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 emsys.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), usesys.implementationem 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émsys.ps2para 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émsys.ps1para o prompt principal.
- 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.