MicroPythonモジュールのフォルダ分け
概要
MicroPythonでモジュールを探索するデフォルトのパスを調べる、
探索パスを追加する、
別のフォルダにあるモジュールを読み込む、方法を調査した
構成
以下の画像のようなフォルダ構成にしたい
mylibフォルダにに自作のライブラリ(my_mathなど)を格納したい
背景
モジュールが増えると、探すのが大変になるので、フォルダ分けしたい、
サードパーティのモジュールは、別のフォルダに格納したい、
などがあり、MicroPythonでモジュールを管理する方法を模索した
環境
ESP32 Dev board
MicroPython v1.19.1 on 2022-06-18; ESP32 module with ESP32
デフォルトの探索パス
モジュールを探す仕組みは、Pythonのsys.pathの仕組みを使っているようだ
筆者のESP32 with MicroPython環境では、デフォルトで、libフォルダが列挙された
つまり、デフォルトでもlibフォルダを作って、モジュールを格納すれば、読み込むことができる
>>> import sys
>>> sys.path
['', '.frozen', '/lib']
別のフォルダのモジュールを読み込む方法
方法1:探索パスを追加する
append()を使うとモジュールを探索するパスを追加することができる
mylibフォルダ以下に、my_add(x, y)関数が入ったmy_math.pyを作成
append('/mylib')と指定していると、フォルダのことは一切意識せずに、以下のようにモジュールを読み込むことができる
>>> sys.path.append('/mylib')
>>> sys.path
['', '.frozen', '/lib', '/mylib'] -> /mylibが探索パスに追加された
from my_math import my_add
>>> my_add(1, 2)
3
# my_math.pyファイル (mylibフォルダに格納)
def my_add(x, y):
return x + y
方法2:別のフォルダのモジュールを読み込む
探索パスは変えずに、別のフォルダからモジュールを読み込むこともできる
mylib2フォルダ以下に、my_add2(x, y)関数が入ったmy_math2.pyを作る
以下のようにドットで区切ってモジュールを読み込むすることができる
from mylib2.my_math2 import my_add2
# my_math2.pyファイル(mylib2フォルダに格納)
def my_add2(x, y):
return x + y
留意事項
sys.path.append()によるパスの追加は便利さと裏腹に、弊害もあると思うので、
チーム開発で利用ときなどは、チームメンバーに相談した方がよいと思う
MicroPythonで中規模な開発やチーム開発はあまりないと思うが念のため
参考にしたサイト
https://forum.micropython.org/viewtopic.php?t=1292
この記事が気に入ったらサポートをしてみませんか?