sys — системно-специфичные функции¶
Этот модуль предоставляет доступ к переменным и функциям, специфичным для интерпретатора, включая аргументы командной строки, путь поиска модулей, стандартные потоки и информацию о работающей реализации.
Функции¶
- sys.exit(retval: object = 0, /) NoReturn¶
Завершает текущую программу с заданным кодом выхода. На внутреннем уровне эта функция возбуждает исключение
SystemExit. Если задан аргумент, его значение передаётся вSystemExit.На OpenMV Cam необработанное исключение
SystemExitв настоящее время вызывает Программный сброс MicroPython.
- sys.atexit(func: Callable[[], None] | None) Callable[[], None] | None¶
Регистрирует func для вызова при завершении. func должен быть вызываемым объектом, не принимающим аргументов, либо
Noneдля отключения вызова. Функцияatexitвозвращает предыдущее значение, установленное этой функцией, которое изначально равноNone.Отличие от CPython
Эта функция является расширением MicroPython, предназначенным для предоставления функциональности, аналогичной модулю
atexitв CPython.
- sys.print_exception(exc: BaseException, file: Any = sys.stdout, /) None¶
Выводит исключение вместе с трассировкой в файлоподобный объект file (или в
sys.stdoutпо умолчанию).Отличие от CPython
Это упрощённая версия функции, имеющейся в модуле
tracebackв CPython. В отличие отtraceback.print_exception(), эта функция принимает только значение исключения вместо типа исключения, значения исключения и объекта трассировки; аргумент file должен быть позиционным; дополнительные аргументы не поддерживаются. CPython-совместимый модульtracebackможно найти вmicropython-lib.
- sys.settrace(tracefunc: Callable | None) None¶
Включает трассировку выполнения байт-кода. Подробности см. в документации CPython.
Эта функция недоступна на OpenMV Cam. Она отключена по умолчанию, поскольку замедляет выполнение кода; для её включения требуется сборка собственной прошивки.
Константы¶
- sys.implementation: object¶
Объект с информацией о текущей реализации Python. Для MicroPython он имеет следующие атрибуты:
name - строка «micropython»
version - кортеж (major, minor, micro, releaselevel), например (1, 22, 0, „“)
_machine - строка, описывающая базовую машину
_mpy - поддерживаемая версия формата файлов mpy (необязательный атрибут)
_build - строка, помогающая определить конфигурацию, с которой был собран MicroPython
_thread - необязательный строковый атрибут, существует, если целевая платформа поддерживает многопоточность, и равен либо «GIL», либо «unsafe»
Этот объект является рекомендуемым способом отличить MicroPython от других реализаций Python (учтите, что он всё же может отсутствовать в самых минимальных портах).
Начиная с версии 1.22.0-preview, четвёртый элемент releaselevel в implementation.version представляет собой либо пустую строку, либо
"preview".Запись _build была добавлена в версии 1.25.0 и представляет собой набор элементов, разделённых дефисами. В будущем могут добавляться новые элементы, поэтому к этому полю лучше всего обращаться через
sys.implementation._build.split("-"). В настоящее время используются следующие элементы:На OpenMV Cam первый элемент — это имя платы, а второй элемент (если присутствует) — вариант платы.
Запись _thread была добавлена в версии 1.26.0, и если она существует, то целевая платформа имеет модуль
_thread. Если целевая платформа включает GIL (глобальную блокировку интерпретатора), то этот атрибут равен"GIL". В противном случае атрибут равен"unsafe", и целевая платформа поддерживает многопоточность, но не включает GIL, и изменяемые объекты Python (такие какbytearray,listиdict), совместно используемые потоками, должны явно защищаться блокировками, например_thread.allocate_lock.Отличие от CPython
CPython требует наличия большего числа атрибутов для этого объекта, но в MicroPython реализован реально полезный минимум.
- sys.maxsize: int¶
Максимальное значение, которое может содержать собственный целочисленный тип на текущей платформе, или максимальное значение, представимое целочисленным типом MicroPython, если оно меньше максимального значения платформы (это касается портов MicroPython без поддержки длинных целых чисел).
Этот атрибут полезен для определения «разрядности» платформы (32-бит против 64-бит и т. д.). Рекомендуется не сравнивать этот атрибут напрямую с каким-либо значением, а вместо этого подсчитывать количество битов в нём:
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.path: list[str]¶
Изменяемый список каталогов для поиска импортируемых модулей.
Отличие от CPython
В MicroPython запись со значением
".frozen"указывает, что в этой точке поиска импорт должен искать замороженные модули. Если замороженный модуль не найден, поиск не будет искать каталог с именем.frozen, вместо этого он продолжится со следующей записи вsys.path.
- sys.platform: str¶
Платформа, на которой работает MicroPython. Это строка, определяемая портом/платой — например,
"mimxrt"на OpenMV RT1060 и"alif"на OpenMV AE3 (некоторые более старые OpenMV Cam сообщают строку, специфичную для модели, например"OpenMV4-H7"). Чтобы проверить, работает ли ваша программа на MicroPython (а не на другой реализации Python), используйте вместо этогоsys.implementation.
- sys.ps1: str¶
Изменяемый атрибут, содержащий строку, используемую для основного приглашения REPL. По умолчанию даёт стандартное приглашение Python
>>>. См. такжеsys.ps2для приглашения продолжения.
- sys.ps2: str¶
Изменяемый атрибут, содержащий строку, используемую для приглашения продолжения REPL. По умолчанию даёт стандартное приглашение Python
.... См. такжеsys.ps1для основного приглашения.