MicroPython ライブラリ¶
警告
この章の重要な要約
- MicroPython は、 Python 標準ライブラリ の機能を反映した組込みモジュール(例:
os
,time
)と、 MicroPython 固有のモジュール (例:bluetooth
,machine
)を提供します。 - ほとんどの Python 標準ライブラリモジュールは、同等の Python モジュールにある機能のサブセットを実装しており、MicroPython 特有の拡張機能を提供しているものもあります(例:
array
,os
)。 - リソースの制約やその他の制限により、ポートやファームウェアのバージョンによっては、ここに記載されているすべての機能が含まれていない場合があります。
- 拡張性を考慮して、組込みモジュールはデバイスのファイルシステムに配置した Python コードで機能追加できます 。
この章では、MicroPython に組み込まれているモジュール(関数やクラスのライブラリ)について説明します。一般にこのドキュメントでは MicroPython プロジェクトに実装されているすべてのモジュールと関数/クラスについて記述することを目指しています。しかし、MicroPython は高度にカスタマイズしてビルドすることができるため、特定のボードや組込みシステムへの各ポートには、利用可能な MicroPython ライブラリのサブセットしか含まれていないかもしれません。
これを念頭に置いて、特定のシステム上の MicroPython の特定のビルドでは、このドキュメントで説明されているモジュールの一部の機能/クラス(またはモジュール全体)が使えない可能性があります。特定の機能が利用できるかどうかの一般的な情報を得るには、特定の MicroPython ポート に関連する情報を含む「一般的な情報」の章が最適です。
いくつかのポートでは REPL に次のように入力することで import できる、利用可能な組込みライブラリを検出できます:
help('modules')
このドキュメントで説明されている組込みライブラリ以外にも、Python 標準ライブラリからの多くのモジュール、さらに MicroPython の拡張もあります。それらは micropython-lib で見つけられます。
Python 標準ライブラリとマイクロライブラリ¶
以下の標準的な Python ライブラリは、MicroPython の哲学に適合するように「マイクロ化」されています。これらは、そのモジュールの中核となる機能を提供し、標準の Python ライブラリを置き換えるものです。
array
-- 数値データの配列asyncio
--- 非同期 I/O スケジューラbinascii
-- バイナリ/ASCII 変換builtins
-- 組込みの関数と例外cmath
-- 複素数のための数学関数collections
-- コレクションとコンテナのデータ型errno
-- システムエラーコードgc
-- ガベージコレクションの制御gzip
-- gzip 圧縮器 & 展開器hashlib
-- ハッシュ化アルゴリズムheapq
-- ヒープキューアルゴリズムio
-- 入出力ストリームjson
-- JSON のエンコードとデコードmath
-- 数学関数os
-- 基本的な「オペレーティングシステム」サービスrandom
-- 乱数の生成re
-- 簡素な正規表現select
-- 一連のストリームのイベント待機socket
-- ソケットモジュールssl
-- SSL/TLS モジュールstruct
-- 基本データ型のパックとアンパックsys
-- システム固有関数time
-- 時間関連の関数zlib
-- zlib 圧縮器 & 展開器_thread
-- マルチスレッドサポート
MicroPython 固有のライブラリ¶
MicroPython 処理系に固有の機能は、以下のライブラリで利用できます。
次のライブラリはハードウェアコンポーネントのためのドライバとして提供します。
ポート固有のライブラリ¶
以降のポート/ボード固有のライブラリには、 machine
ライブラリ内にあるものと同様の関数やクラスが用意されていることがあります。そのような場合、ポート固有のライブラリの方では、そのプラットフォームに固有のハードウェア機能が使えるようになっています。
移植可能なコードを作成するには、 machine
モジュールの関数やクラスを使ってください。プラットフォーム固有のハードウェアにアクセスするには、適切なポート固有ライブラリを使ってください。たとえば Pyboard の場合は pyb
を使います。
pyboard 固有のライブラリ¶
以下のライブラリは pyboard に固有のものです。
WiPy 固有のライブラリ¶
以下のライブラリとクラスは WiPy に固有のものです。
RP2040 に固有のライブラリ¶
以下のライブラリは (Raspberry Pi Pico で使われている) RP2040 に固有のものです。
Zephyr に固有のライブラリ¶
以下のライブラリは Zephyr ポート に固有のものです。
Python での組込みライブラリの拡張¶
組込みモジュールのサブセットは、ファイルシステムに同名のモジュールを配置することで、Python コードによる拡張が可能です。この拡張性は、ファームウェアに組み込まれている次の Python 標準ライブラリモジュールに適用されます: array
, binascii
, collections
, errno
, gzip
, hashlib
, heapq
, io
, json
, os
, platform
, random
, re
, select
, socket
, ssl
, struct
, time
, zlib
および MicroPython 固有の machine
モジュール。他のすべての組込みモジュールは、ファイルシステムから拡張できません。
これにより、ユーザは組み込みライブラリの拡張実装を提供できます(おそらく CPython との互換性や不足している機能を追加するため)。これは micropython-lib で広く使われています。詳しくは パッケージ管理 を参照してください。ファイルシステムモジュールは通常、組込みモジュールからすべての globals (クラス、関数、変数)を継承するために、組込みモジュールのワイルドカード import を実行します
MicroPython v1.21.0 以降では、ファイルシステム上の拡張モジュールがそれ自体をインポートするのを防ぐために、インポート中に sys.path
を一時的にクリアして、組込みモジュールの方のインポートを強制できます。たとえば、Python から time
モジュールを、ファイルシステム上に time.py
という名前のファイルで拡張する場合、次のようになります:
_path = sys.path
sys.path = ()
try:
from time import *
finally:
sys.path = _path
del _path
def extra_method():
pass
その結果、 time.py
は組込みの time
モジュールの全ての globals を含むとともに、 extra_method
を追加します。
MicroPython の以前のバージョンでは、組込みモジュールの名前の最初に u を付けることで、強制的にインポートできます。たとえば、 import time
の代わりに import utime
とします。たとえば、ファイルシステム上の time.py
は次のようになります:
from utime import *
def extra_method():
pass
この方法はまだサポートされていますが、MicroPython の将来のバージョンで組み込みモジュールの名前から u
プレフィックスが削除されるため、上記の sys.path
方式にすることが好ましいです。
特に組込みモジュールを強制的に使いたい場合以外は、常に import umodule
よりも import module
の利用を推奨します。