三日月館【別館】開発・制作Tips集

[Python] パッケージ内の全モジュールを動的に取得する

最終更新:

fumiduki1985

- view
管理者のみ編集可
pkgutilモジュールを使用することで可能。
詳細は省くので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()に渡してクラスの一覧を取得するといった処理に利用可能


このページのタグ一覧
Python プログラミング

記事メニュー
ウィキ募集バナー