このドキュメンテーションは、MicroPython の最新開発ブランチのためのものです。 リリースバージョンでは利用できない機能に言及することがあります。

特定のリリースのドキュメントをお探しの場合は、左側のドロップダウンメニューを使って、 望みのバージョンを選択します。

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 ライブラリを置き換えるものです。

MicroPython 固有のライブラリ

MicroPython 処理系に固有の機能は、以下のライブラリで利用できます。

次のライブラリはハードウェアコンポーネントのためのドライバとして提供します。

ポート固有のライブラリ

以降のポート/ボード固有のライブラリには、 machine ライブラリ内にあるものと同様の関数やクラスが用意されていることがあります。そのような場合、ポート固有のライブラリの方では、そのプラットフォームに固有のハードウェア機能が使えるようになっています。

移植可能なコードを作成するには、 machine モジュールの関数やクラスを使ってください。プラットフォーム固有のハードウェアにアクセスするには、適切なポート固有ライブラリを使ってください。たとえば Pyboard の場合は pyb を使います。

pyboard 固有のライブラリ

以下のライブラリは pyboard に固有のものです。

WiPy 固有のライブラリ

以下のライブラリとクラスは WiPy に固有のものです。

ESP8266 と ESP32 に固有のライブラリ

以下のライブラリは ESP8266 と ESP32 に固有のものです。

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 の利用を推奨します。