三日月館【別館】開発・制作Tips集
[Python] パッケージ内の全モジュールを動的に取得する
最終更新:
fumiduki1985
-
view
pkgutilモジュールを使用することで可能。
詳細は省くのでPythonリファレンスマニュアルのplgutilの項目を参照されたし。
詳細は省くのでPythonリファレンスマニュアルのplgutilの項目を参照されたし。
記述例:
import os
import pkgutil
import user_package # モジュール検索対象のパッケージ
# パッケージのフォルダを取得する
packageFile = user_package.__file__
packageDir = os.path.dirname(packageFile)
# パッケージ内のモジュールを検索する
for moduleFinder, moduleName, isPackage in plgutil.iter_modules([packageDir]):
# モジュールの検索
moduleLoader = moduleFinder.find_module(moduleName)
if moduleLoader is None:
continue
# モジュールのロード
module = moduleLoader.load_module(moduleName)
if module is None:
continue
# この時点で取得できるmoduleがPythonのモジュールオブジェクトとなる。
# inspect.getmembers()に渡してクラスの一覧を取得するといった処理に利用可能
