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 の拡張であり、CPython の
atexitモジュールと同様の機能を提供することを目的としています。
- sys.print_exception(exc: BaseException, file: Any = sys.stdout, /) None¶
ファイルライクオブジェクト file(指定しない場合は
sys.stdout)にトレースバック付きで例外を出力します。CPython との違い
これは CPython の
tracebackモジュールに含まれる関数の簡易版です。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 以降、implementation.version の 4 番目のノード releaselevel は、空文字列または
"preview"のいずれかになります。_build エントリはバージョン 1.25.0 で追加され、ハイフンで区切られた要素の集合です。将来的に新しい要素が追加される可能性があるため、このフィールドには
sys.implementation._build.split("-")を使ってアクセスするのが最善です。現在使用されている要素は次のとおりです:OpenMV Cam では、最初の要素はボード名で、2 番目の要素(存在する場合)はボードのバリアントです。
_thread エントリはバージョン 1.26.0 で追加され、これが存在する場合、ターゲットは
_threadモジュールを持っています。ターゲットが GIL(グローバルインタプリタロック)を有効にしている場合、この属性は"GIL"になります。それ以外の場合、属性は"unsafe"となり、ターゲットはスレッドをサポートしていますが GIL を有効にしていません。この場合、スレッド間で共有される可変な Python オブジェクト(bytearray、list、dictなど)は、_thread.allocate_lockなどのロックで明示的に保護する必要があります。CPython との違い
CPython ではこのオブジェクトにさらに多くの属性が必須とされていますが、実際に有用な最小限のものが MicroPython では実装されています。
- sys.maxsize: int¶
現在のプラットフォームでネイティブの整数型が保持できる最大値、または MicroPython の整数型で表現可能な最大値(プラットフォームの最大値より小さい場合。これは long int サポートのない 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 modules を検索すべきことを示します。frozen モジュールが見つからない場合、検索は.frozenという名前のディレクトリを探すことは せず、代わりにsys.pathの次のエントリへ進みます。
- sys.platform: str¶
MicroPython が動作しているプラットフォームです。これはポート/ボードで定義される文字列です。例えば OpenMV RT1060 では
"mimxrt"、OpenMV AE3 では"alif"となります(一部の古い OpenMV Cam では"OpenMV4-H7"のようなモデル固有の文字列を報告します)。プログラムが(他の Python 実装ではなく)MicroPython 上で動作しているかどうかを確認するには、代わりにsys.implementationを使用してください。
- sys.ps1: str¶
プライマリ REPL プロンプトに使用される文字列を保持する可変属性です。デフォルトでは標準的な Python プロンプトの
>>>になります。継続プロンプトについてはsys.ps2も参照してください。
- sys.ps2: str¶
REPL の継続プロンプトに使用される文字列を保持する可変属性です。デフォルトでは標準的な Python プロンプトの
...になります。プライマリプロンプトについてはsys.ps1も参照してください。