Python动态导入
Python动态导入
这个问题已经有答案了::
我有一个类似[(module_name, module_abs_path)(mod2, path2), ...]
的元组列表。
这些模块位于脚本所在的“modules”子目录中。我正在编写一个脚本,该脚本读取一个配置文件,并使来自“modules”目录的模块中的某些变量可用。我的意图是从此脚本加载和运行所有模块,以便它们可以访问这些变量。
我已经尝试过但失败的事项:
- 尝试使用
__import __()
,但它说不允许按文件名运行 - 尝试
importlib.import_module()
但是会出现相同的错误。
我应该如何做这件事?
admin 更改状态以发布 2023年5月21日
在导入之前尝试修复路径了吗?
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