MicroPython ライブラリ

警告

この章の重要な要約

  • MicroPython は、Python 標準ライブラリの機能を反映した組込みモジュール(例: os, time)と、MicroPython 固有のモジュール(例: bluetooth, machine)を提供します。
  • ほとんどの標準ライブラリモジュールは、同等の Python モジュールにある機能のサブセットを実装しており、MicroPython 特有の拡張機能を提供しているものもあります(例: array, os)。
  • リソースの制約やその他の制限により、ポートやファームウェアのバージョンによっては、ここに記載されているすべての機能が含まれていない場合があります。
  • 拡張性を考慮して、組込みモジュールはデバイスにロードされた Python コードで拡張できます。

この章では、MicroPython に組み込まれているモジュール(関数やクラスのライブラリ)について説明します。一般にこのドキュメントでは MicroPython プロジェクトに実装されているすべてのモジュールと関数/クラスについて記述することを目指しています。しかし、MicroPython は高度にカスタマイズしてビルドすることができるため、特定のボードや組込みシステムへの各ポートには、利用可能な MicroPython ライブラリのサブセットしか含まれていないかもしれません。

これを念頭に置いて、特定のシステム上の MicroPython の特定のビルドでは、このドキュメントで説明されているモジュールの一部の機能/クラス(またはモジュール全体)が使えない可能性があります。特定の機能が利用できるかどうかの一般的な情報を得るには、特定の MicroPython ポート に関連する情報を含む「一般的な情報」の章が最適です。

いくつかのポートでは REPL に次のように入力することで import できる、利用可能な組込みライブラリを検出できます:

help('modules')

このドキュメントで説明されている組込みライブラリ以外にも、Python 標準ライブラリからの多くのモジュール、さらに MicroPython の拡張もあります。それらは micropython-lib で見つけられます。

ポート固有のライブラリ

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

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

RP2040 に固有のライブラリ

以下のライブラリは (Raspberry Pi Pico で使われている) RP2040 に固有のものです。

Zephyr に固有のライブラリ

以下のライブラリは Zephyr ポート に固有のものです。

Python での組込みライブラリの拡張

ほとんどの場合、上記のモジュールの名前には接頭辞 u がついています(たとえばモジュール名がだとすると、それは実際には umodule というものになっています)が、MicroPython は接頭辞の無いものにエイリアスします。しかし module.py という名前のファイル(またはその 凍結モジュール)は、このエイリアスよりも優先されます。

これにより、ユーザは組み込みライブラリの拡張実装を提供できます(おそらくは CPython との互換性を高めることが目的でしょう)。ユーザが提供するモジュール(module.py)は umodule を直接インポートすることで組み込みの機能を使えます。これは micropython-lib で広く使われています。詳しくは Distribution packages, package management, and deploying applications を参照してください。

これは、Python の標準ライブラリ(例: os, time など)だけでなく、MicroPythonのライブラリ(例: machine, bluetooth など)にも適用されます。主な例外はポート固有のライブラリ(pyb, esp など)です。

特に組込みモジュールを強制的に使いたい場合以外は、常に import umodule よりも import module の利用をお勧めします。