【发布时间】:2014-10-04 13:03:10
【问题描述】:
我有一个项目尝试动态创建一个新模块,然后在随后的exec 语句中尝试导入该模块。
import imp
s="""
class MyClass(object):
def __init__(self):
pass
def foo(self):
pass
"""
mod = imp.new_module("testmodule.testA")
exec s in mod.__dict__
exec "import testmodule.testA"
但这会引发此异常:
Traceback (most recent call last):
File "test.py", line 14, in <module>
exec "import testmodule.testA"
File "<string>", line 1, in <module>
ImportError: No module named testmodule.testA
我尝试了几件事:将它添加到 sys.modules,创建一个包含名称和模块的scope dict。但没有骰子。当我在 exec 语句中执行 print locals() 时,我可以看到 testmodule.testA,但我无法导入它。我在这里错过了什么?
谢谢。
【问题讨论】:
-
您说您已经“尝试将其添加到 sys.modules”,这对于后续导入工作是必要的。但这没有显示在您的代码中。您是否真的按照下面 Martjin Pieters 的回答中所述执行此操作?
标签: python python-import python-exec