sys -- システム固有関数
このモジュールは、該当する CPython モジュールのサブセットを実装しています。
詳しくはオリジナルの CPython ドキュメンテーションを参照してください: sys.
関数
- sys.exit(retval=0, /)
与えた終了コードで現在のプログラムを終了します。基本的に、この関数は
SystemExit例外を起こします。引数を与えた場合、その値はSystemExitに引数として与えられます。組込み系のポート(すなわち Windows と Unix 以外のすべてのポート)では、現在のところ処理されない
SystemExitが発生すると、MicroPython の ソフトリセット が発生します。
- sys.atexit(func)
終了時に呼び出す関数 func を登録します。 func は、引数の無い呼出し可能オブジェクトである必要があります。呼出しを無効にするには func に
Noneを指定します。このatexit関数は、この関数で以前に設定した値を返します。初回の呼び出しではNoneを返します。CPython との違い
この関数は、CPython の
atexitモジュールと似た機能を提供することを目的とした MicroPython の拡張機能です。
- sys.print_exception(exc, file=sys.stdout, /)
例外をトレースバック付きでファイルライクなオブジェクト file (またはデフォルトの
sys.stdout)に出力します。CPython との違い
これは CPython の
tracebackモジュールにある関数の簡略版です。traceback.print_exception()とは異なり、この関数は例外型、例外値、トレースバックオブジェクトの代わりに例外値だけをとります。 file 引数は位置パラメータでなければなりません。この他の引数はサポートされていません。CPython 互換のtracebackモジュールはmicropython-libにあります。
- sys.settrace(tracefunc)
バイトコード実行のトレースを有効にします。詳細については CPython のドキュメント を参照してください。
この関数は、(パフォーマンスに影響するので)ビルド済みファームウェアのほとんどには組み込まれていません。そのような場合に利用できるようにするには、MicroPython のカスタムビルドが必要です。関連する設定オプションは MICROPY_PY_SYS_SETTRACE です。
定数
- sys.argv
現在のプログラム開始時の引数の変更可能なリスト。
- sys.byteorder
システムのバイト順(
"little"または"big")。
- sys.implementation
現在の 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("-")を使ってアクセスするのが最適です。現在使用されている要素は以下のとおりです:unix、webassembly、windows ポートでは、最初の要素がバリアント名です。たとえば
'standard'などとなります。マイコン向けのターゲットでは最初の要素がボード名となります。2番目の要素は(あれば)ボードのバリアントを示し、たとえば RPI_PICO2-RISCV などとなります。
_thread エントリはバージョン 1.26.0 で追加されました。このエントリが存在する場合、そのターゲットには
_threadモジュールが含まれています。ターゲットが GIL (グローバルインタプリタロック)を有効にしている場合、この属性は"GIL"となります。GIL を有効にしていない場合は属性が"unsafe"となり、スレッド機能はあるものの GIL は無効です。この場合、ミュータブルな Python オブジェクト(bytearray,list,dictなど)をスレッド間で共有する際には、_thread.allocate_lockのようなロックで明示的に保護する必要があります。CPython との違い
CPython ではこのオブジェクトにもっと多くの属性がありますが、MicroPython では実際に有用となる最低限のものだけを実装しています。
- sys.maxsize
現在のプラットフォームでネイティブ整数型が保持できる最大値、またはプラットフォームの最大値より小さい場合は MicroPython 整数型で表現可能な最大値(MicroPython ポートで 長整数をサポートしないとした場合)。
この属性は、プラットフォームの「ビット数」(32ビットか64ビットかなど)を検出するのに便利です。この属性をある値と直接比較するのよりも、その属性のビット数をカウントすることをお勧めします。
bits = 0 v = sys.maxsize while v: bits += 1 v >>= 1 if bits > 32: # 64ビット(以上)のプラットフォーム ... else: # 32ビット(以下)のプラットフォーム # 32ビットプラットフォームでは、上記の特性によってビットの値が32未満 # (たとえば31)になる可能性があるので、 "> 16", "> 32", "> 64" の # の比較スタイルを使用してください。
- sys.modules
読み込まれたモジュールの辞書。一部のポートでは、組込みモジュールが含まれていない可能性があります。
- sys.path
import するモジュールを検索するディレクトリの変更可能なリスト。
CPython との違い
MicroPythonでは、
".frozen"という値を持つエントリは、import が検索時に 凍結モジュール を検索することを意味します。凍結モジュールが見つからなければ、.frozenというディレクトリを 探さず 、代わりにsys.pathの次のエントリで検索を続行します。
- sys.platform
MicroPython が実行されているプラットフォーム。OS/RTOS ポートの場合、これは通常
"linux"など OS の識別子となります。ベアメタルポートの場合はボードの識別子となります。オリジナルの MicroPython リファレンスボードでは"pyboard"となります。したがって、これはあるボードを別のボードと区別するために使用できます。あなたのプログラムが MicroPython 上で実行されているのか(それとも他の Python 実装で動いているのか)を確認する必要がある場合は代わりにsys.implementationを使ってください。
- sys.tracebacklimit
例外に格納するトレースバックエントリの最大数を整数値で保持する変更可能属性です。0 を設定すると、トレースバックの追加を無効にします。デフォルトは 1000 です。
注記: これはすべてのポートで使用できるわけではありません。
- sys.version
この処理系が準拠する Python 言語バージョンを表す文字列。
- sys.version_info
この実装が準拠している Python 言語バージョンを表す int の タプル。
CPython との違い
最初の3つのバージョン番号 (major, minor, micro) のみがサポートされ、インデックスでのみ参照でき、名前では参照できません。