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 a SystemExit.

En la OpenMV Cam, una excepción SystemExit no 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 None para deshabilitar la llamada. La función atexit devolverá el valor anterior establecido por esta función, que inicialmente es None.

Diferencia con CPython

Esta función es una extensión de MicroPython destinada a proporcionar una funcionalidad similar a la del módulo atexit de 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.stdout de forma predeterminada).

Diferencia con CPython

Esta es una versión simplificada de una función que aparece en el módulo traceback de CPython. A diferencia de traceback.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ódulo traceback compatible con CPython se encuentra en micropython-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.argv: list[str]

Una lista mutable de los argumentos con los que se inició el programa actual.

sys.byteorder: str

El orden de bytes del sistema ("little" o "big").

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 (como bytearray, list y dict) 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 de sys.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), usa sys.implementation en 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én sys.ps2 para 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én sys.ps1 para el prompt principal.

sys.stderr: object

Flujo (stream) de error estándar.

sys.stdin: object

Flujo (stream) de entrada estándar.

sys.stdout: object

Flujo (stream) de salida estándar.

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.

sys.version: str

Versión del lenguaje Python a la que se ajusta esta implementación, como cadena.

sys.version_info: tuple

Versión del lenguaje Python a la que se ajusta esta implementación, como una tupla de enteros.

Diferencia con CPython

Solo se admiten los tres primeros números de versión (major, minor, micro) y solo se puede acceder a ellos por índice, no por nombre.