我在python 2.7中总共有三个文件:
module1.py
)worker.py
)worker.py
当文件worker.py
看起来如下
import module1 as mod
一切都按预期工作(即我可以在我的主代码中使用worker.mod.XXX
)。但是,当我将worker.py
的内容替换为如下(我希望这样做)时:
mod = __import__('module1')
我收到错误:ImportError: No module named module1
。我需要后一种方法来处理从列表中自动导入模块的事情。
我在这里缺少什么?
更确切地说:我只是想找到一种方法来取代声明
将module1导入为mod
通过module1
是一个字符串的表达式。我有例如modulname='module1'
,并希望使用字符串modulname
中指定的模块名称导入模块。怎么做?
答案 0 :(得分:3)
__import__(name, globals={}, locals={}, fromlist=[], level=-1) -> module
导入模块。因为这个函数适合Python使用
口译员而不是一般用途,最好使用
importlib.import_module()
以编程方式导入模块。
globals
参数仅用于确定上下文;
它们没有被修改。 locals参数未使用。来自清单
应该是一个模拟from name import ...
的名称列表,或者是
用于模拟import name
的空列表。
从包导入模块时,请注意__import__('A.B', ...)
当fromlist为空时返回包A,但其子模块B何时返回
fromlist不是空的。级别用于确定是否执行
绝对或相对进口。 -1是尝试的原始策略
绝对和相对进口,0是绝对,正数
是要相对于当前模块搜索的父目录的数量。
答案 1 :(得分:2)
试试这个:
mod = __import__('module1', globals=globals())