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.argv: list[str]

Змінний список аргументів, з якими була запущена поточна програма.

sys.byteorder: str

Порядок байтів системи ("little" або "big").

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.modules: dict

Словник завантажених модулів. На OpenMV Cam він не включає вбудовані модулі.

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 для основної підказки.

sys.stderr: object

Стандартний потік помилок stream.

sys.stdin: object

Стандартний вхідний stream.

sys.stdout: object

Стандартний вихідний stream.

sys.tracebacklimit: int

Змінний атрибут, що зберігає ціле значення — максимальну кількість записів трасування для зберігання у винятку. Встановіть у 0, щоб вимкнути додавання трасувань. За замовчуванням — 1000.

Примітка: цей атрибут недоступний на OpenMV Cam.

sys.version: str

Версія мови Python, якій відповідає ця реалізація, у вигляді рядка.

sys.version_info: tuple

Версія мови Python, якій відповідає ця реалізація, у вигляді кортежу цілих чисел.

Відмінність від CPython

Підтримуються лише перші три номери версії (major, minor, micro), і на них можна посилатися лише за індексом, а не за іменем.