Python dynamic import
本问题已经有最佳答案,请猛点这里访问。
我有一个像
这些模块位于脚本所在的"模块"子目录中。我正在尝试编写一个脚本,该脚本读取一个conf文件,并使conf文件中的一些变量可用于modules dir中的模块。我的目的是加载并运行这个脚本中的所有模块,这样它们就可以访问这些变量。
到目前为止我尝试过但失败的事情:
我该怎么做呢?
导入之前是否尝试修复路径?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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 |