【发布时间】:2018-07-23 06:19:22
【问题描述】:
我有这个手动携带模块的代码
exec("import" + moduleName + " as selectedModule")
importlib.reload(selectedModule)
但是这段代码使
name 'seletedModule' is not defined
这在 python2.x 上没有发生。 如何在 python3 上导入这个?
【问题讨论】:
我有这个手动携带模块的代码
exec("import" + moduleName + " as selectedModule")
importlib.reload(selectedModule)
但是这段代码使
name 'seletedModule' is not defined
这在 python2.x 上没有发生。 如何在 python3 上导入这个?
【问题讨论】:
如果您需要动态导入库,请不要使用exec,它不安全。
请改用importlib.import_module。
selected_module = importlib.import_module(module_name)
importlib.reload(selected_module)
至于您遇到的错误:您可能在函数范围内调用exec,因此您需要手动将globals 和locals 设置为在exec 中相同(@ 987654321@)。解决方法:
exec("<do-stuff>", globals())
【讨论】: