目录结构如下:
moduleImportTest
|____ main.py
|____ test
|___ mymod.py
我正在尝试使用importlib
从 main.py 导入 mymod.py 。目前, main.py 看起来像这样:
import importlib, os
theFile = os.path.dirname(os.path.abspath(__file__)) + "/test/mymod.py"
print(theFile)
importlib.import_module(theFile)
第3行的print
语句输出正确的文件路径(尽管在此示例中,我将真实姓名替换为“用户名”:)
/home/username/moduleImportTest/test/mymod.py
但是,第4行抛出异常:
File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 941, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
ModuleNotFoundError: No module named '/home/username/moduleImportTest/test/mymod'
我无法弄清楚是什么原因造成的。我真的不知所措。
关于此的许多在线信息表明,我应该先使用importlib
将相关目录添加到路径中,然后再使用常规的import语句导入,而不是直接将路径传递到sys
模块正常。我不想采用这种方法的原因是,将来我希望能够遍历特定目录并在其中导入 all 模块,而不管名称如何。
有什么办法可以解决这个问题吗?我愿意尝试与我正在做的事情完全不同的事情,但前提是它必须具有如上所述的迭代和导入所有功能的能力。