我有这样的文件结构:
dir_a
__init__.py
mod_1.py
mod_2.py
dir_b
__init__.py
my_mod.py
我想动态导入 in 中的每个模块,dir_a
为了my_mod.py
做到这一点,我在__init__.py
of 中有以下内容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
我想知道是什么原因造成的,是因为父目录包含dir_a
并且dir_b
必须在 PYTHONPATH 中吗?此外,上述方法仅在my_mod.py
运行时获取所有内容的意义上是动态的,但如果dir_a
在运行期间添加新模块,则不会获取该新模块。那么有没有可能实现真正的动态导入机制呢?