私はこのようなファイル構造を持っています:
dir_a
__init__.py
mod_1.py
mod_2.py
dir_b
__init__.py
my_mod.py
のすべてのモジュールを動的にインポートしたいのですが、そのためdir_a
にmy_mod.py
、の中に次のものが__init__.py
ありdir_a
ます。
import os
import glob
__all__ = [os.path.basename(f)[:-3] for f in glob.glob(os.path.dirname(os.path.abspath(__file__)) + "/*.py")]
しかし、私がそうするとき:
from dir_a import *
私は得るImportError: No module named dir_a
これは何が原因なのだろうか。親ディレクトリにPYTHONPATHが含まdir_a
れている必要があるためですか?dir_b
さらに、上記のアプローチは、my_mod.py
実行時にすべてを取得するという意味でのみ動的ですが、実行中に新しいモジュールが追加された場合、dir_a
この新しいモジュールは取得されません。では、真に動的なインポートメカニズムを実装することは可能ですか?