【发布时间】:2017-11-12 10:34:59
【问题描述】:
我尝试在 python 中使用 exec("import __ as tmp") 导入模块:
def prepare(self):
for modName in self._config.modules.keys():
print(locals())
exec("import {} as tmp".format(modName))
print(locals())
self._moduleInst[modName] = tmp
输出是:
{'modName': 'time', 'self': <pyo.Server.Server object at 0x000001CA17DFB550>}
{'modName': 'time', 'self': <pyo.Server.Server object at 0x000001CA17DFB550>, 'tmp': <module 'time' (built-in)>}
Traceback (most recent call last):
File "[...]", line 3, in <module>
startServer(None)
File "[...]", line 10, in startServer
server.prepare()
File "[...]", line 15, in prepare
self._moduleInst[modName] = tmp
NameError: name 'tmp' is not defined
我得到一个 NameError 异常,导致 python 找不到 tmp。如果我打印出所有局部变量,则定义了 tmp...
有人知道我做错了什么吗?谢谢!
【问题讨论】:
-
编辑:如果我在控制台中尝试相同的操作,它可以在函数之外工作,但在函数中会发生相同的错误...
标签: python import exec nameerror