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 のエンコードとデコードmarshal-- Python オブジェクト整列化math-- 数学関数os-- 基本的な「オペレーティングシステム」サービスplatform-- 基盤プラットフォームの識別データへのアクセスrandom-- 乱数の生成re-- 簡素な正規表現select-- 一連のストリームのイベント待機socket-- ソケットモジュールssl-- SSL/TLS モジュールstring.templatelib-- テンプレート文字列サポートstruct-- 基本データ型のパックとアンパックsys-- システム固有関数time-- 時間関連の関数weakref-- Python オブジェクトのライフタイム管理zlib-- zlib 圧縮器 & 展開器_thread-- マルチスレッドサポート
MicroPython 固有のライブラリ
MicroPython 処理系に固有の機能は、以下のライブラリで利用できます。
bluetooth--- 低レベル Bluetoothbtree-- 単純な BTree データベースcryptolib-- 暗号化アルゴリズムdeflate-- DEFLATE 圧縮と展開framebuf--- フレームバッファの操作machine--- ハードウェア関連の関数micropython-- MicroPython 内部のアクセスと制御neopixel--- WS2812 / NeoPixel LED の制御network--- ネットワーク設定openamp-- 標準非対称マルチプロセッシング(AMP)の提供uctypes-- 構造化手法でのバイナリデータアクセスvfs-- 仮想ファイルシステム制御
次のライブラリはハードウェアコンポーネントのためのドライバとして提供します。
ポート固有のライブラリ
以降のポート/ボード固有のライブラリには、 machine ライブラリ内にあるものと同様の関数やクラスが用意されていることがあります。そのような場合、ポート固有のライブラリの方では、そのプラットフォームに固有のハードウェア機能が使えるようになっています。
移植可能なコードを作成するには、 machine モジュールの関数やクラスを使ってください。プラットフォーム固有のハードウェアにアクセスするには、適切なポート固有ライブラリを使ってください。たとえば Pyboard の場合は pyb を使います。
pyboard 固有のライブラリ
以下のライブラリは pyboard に固有のものです。
WiPy 固有のライブラリ
以下のライブラリとクラスは WiPy に固有のものです。
ESP8266 と ESP32 に固有のライブラリ
以下のライブラリは ESP8266 と ESP32 に固有のものです。
NXP i.MXRT に固有のライブラリ
以下のライブラリは、マイクロコントローラ NXP i.MXRT ファミリーに固有のものです。
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 で広く使われています。詳しくは パッケージ管理 を参照してください。ファイルシステムモジュールは、組込みモジュールのワイルドカード import を行って、組込みモジュールからすべての globals (クラス、関数、変数)を継承するのが一般的です。
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 の利用を推奨します。