python importlib找不到具有绝对路径的模块

时间:2020-11-11 14:31:09

标签: python path python-import

目录结构如下:

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 模块,而不管名称如何。

有什么办法可以解决这个问题吗?我愿意尝试与我正在做的事情完全不同的事情,但前提是它必须具有如上所述的迭代和导入所有功能的能力。

0 个答案:

没有答案