我有一个像[(module_name, module_abs_path)(mod2, path2), ...]
模块位于我的脚本所在的“modules”子目录中。我正在尝试编写一个脚本,该脚本读取conf文件,并从模块目录中的模块中获取conf文件中的一些变量。我的目的是从该脚本加载并运行所有模块,以便他们可以访问这些变量。
到目前为止我尝试过但失败了:
__import__()
,但表示不允许按文件名运行importlib.import_module()
,但同样的错误。我该怎么做呢?
答案 0 :(得分:1)
您是否尝试在导入之前修复路径?
from __future__ import print_function
import importlib
import sys
def import_modules(modules):
modules_dict = dict()
for module_name, module_path in modules:
sys.path.append(module_path) # Fix the path
modules_dict[module_name] = importlib.import_module(module_name)
sys.path.pop() # Undo the path.append
return modules_dict
if __name__ == '__main__':
modules_info = [
('module1', '/abs/path/to/module1'),
]
modules_dict = import_modules(modules_info)
# At this point, we can access the module as
# modules_dict['module1']
# or...
globals().update(modules_dict)
# ... simply as module1