sys — funciones específicas del sistema¶
Este módulo proporciona acceso a variables y funciones específicas del intérprete, incluyendo los argumentos de línea de comandos, la ruta de búsqueda de módulos, los flujos estándar e información sobre la implementación en ejecución.
Funciones¶
- sys.exit(retval: object = 0, /) NoReturn¶
Termina el programa actual con el código de salida indicado. Internamente, esta función lanza una excepción
SystemExit. Si se proporciona un argumento, su valor se pasa como argumento aSystemExit.En la OpenMV Cam, una excepción
SystemExitno controlada provoca actualmente un Reinicio en caliente de MicroPython.
- sys.atexit(func: Callable[[], None] | None) Callable[[], None] | None¶
Registra func para que se llame al terminar. func debe ser un invocable que no tome argumentos, o
Nonepara deshabilitar la llamada. La funciónatexitdevolverá el valor anterior establecido por esta función, que inicialmente esNone.Diferencia con CPython
Esta función es una extensión de MicroPython destinada a proporcionar una funcionalidad similar a la del módulo
atexitde CPython.
- sys.print_exception(exc: BaseException, file: Any = sys.stdout, /) None¶
Imprime la excepción con su traza (traceback) en un objeto tipo archivo file (o
sys.stdoutde forma predeterminada).Diferencia con CPython
Esta es una versión simplificada de una función que aparece en el módulo
tracebackde CPython. A diferencia detraceback.print_exception(), esta función toma únicamente el valor de la excepción en lugar del tipo de excepción, el valor de la excepción y el objeto de traza; el argumento file debe ser posicional; no se admiten más argumentos. El módulotracebackcompatible con CPython se encuentra enmicropython-lib.
- sys.settrace(tracefunc: Callable | None) None¶
Habilita el rastreo de la ejecución de bytecode. Para más detalles consulta la documentación de CPython.
Esta función no está disponible en la OpenMV Cam. Está deshabilitada de forma predeterminada porque ralentiza la ejecución del código; habilitarla requiere compilar firmware personalizado.
Constantes¶
- sys.implementation: object¶
Objeto con información sobre la implementación actual de Python. En MicroPython, tiene los siguientes atributos:
name - cadena «micropython»
version - tupla (major, minor, micro, releaselevel), por ejemplo (1, 22, 0, “”)
_machine - cadena que describe la máquina subyacente
_mpy - versión del formato de archivo mpy admitida (atributo opcional)
_build - cadena que puede ayudar a identificar la configuración con la que se compiló MicroPython
_thread - atributo de cadena opcional, existe si el destino tiene hilos (threading) y es «GIL» o «unsafe»
Este objeto es la forma recomendada de distinguir MicroPython de otras implementaciones de Python (ten en cuenta que aún podría no existir en los ports más mínimos).
A partir de la versión 1.22.0-preview, el cuarto nodo releaselevel en implementation.version es una cadena vacía o
"preview".La entrada _build se añadió en la versión 1.25.0 y es un conjunto de elementos separados por guiones. En el futuro podrían añadirse nuevos elementos, por lo que es mejor acceder a este campo usando
sys.implementation._build.split("-"). Los elementos que se utilizan actualmente son:En la OpenMV Cam, el primer elemento es el nombre de la placa y el segundo elemento (si está presente) es la variante de la placa.
La entrada _thread se añadió en la versión 1.26.0 y, si existe, entonces el destino tiene el módulo
_thread. Si el destino habilita el GIL (bloqueo global del intérprete), entonces este atributo es"GIL". De lo contrario, el atributo es"unsafe"y el destino tiene hilos pero no habilita el GIL, y los objetos mutables de Python (comobytearray,listydict) que se comparten entre hilos deben protegerse explícitamente con bloqueos como_thread.allocate_lock.Diferencia con CPython
CPython exige más atributos para este objeto, pero el mínimo realmente útil está implementado en MicroPython.
- sys.maxsize: int¶
Valor máximo que puede contener un tipo de entero nativo en la plataforma actual, o valor máximo representable por el tipo de entero de MicroPython, si es menor que el valor máximo de la plataforma (ese es el caso de los ports de MicroPython sin soporte para enteros largos).
Este atributo es útil para detectar la «anchura de bits» de una plataforma (32 bits frente a 64 bits, etc.). Se recomienda no comparar este atributo directamente con algún valor, sino contar el número de bits que contiene:
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¶
Diccionario de módulos cargados. En la OpenMV Cam, no incluye los módulos integrados.
- sys.path: list[str]¶
Una lista mutable de directorios en los que buscar los módulos importados.
Diferencia con CPython
En MicroPython, una entrada con el valor
".frozen"indicará que la importación debe buscar módulos congelados en ese punto de la búsqueda. Si no se encuentra ningún módulo congelado, la búsqueda no buscará un directorio llamado.frozen, sino que continuará con la siguiente entrada desys.path.
- sys.platform: str¶
La plataforma en la que se ejecuta MicroPython. Esta es una cadena definida por el port/placa; por ejemplo,
"mimxrt"en la OpenMV RT1060 y"alif"en la OpenMV AE3 (algunas OpenMV Cams más antiguas reportan una cadena específica del modelo, como"OpenMV4-H7"). Para comprobar si tu programa se ejecuta en MicroPython (frente a otra implementación de Python), usasys.implementationen su lugar.
- sys.ps1: str¶
Atributo mutable que contiene la cadena utilizada para el prompt principal del REPL. El valor predeterminado da el prompt estándar de Python
>>>. Consulta tambiénsys.ps2para el prompt de continuación.
- sys.ps2: str¶
Atributo mutable que contiene la cadena utilizada para el prompt de continuación del REPL. El valor predeterminado da el prompt estándar de Python
.... Consulta tambiénsys.ps1para el prompt principal.
- sys.tracebacklimit: int¶
Atributo mutable que contiene un valor entero que es el número máximo de entradas de traza (traceback) que se almacenan en una excepción. Establécelo en 0 para deshabilitar la adición de trazas. El valor predeterminado es 1000.
Nota: este atributo no está disponible en la OpenMV Cam.