带有exec的Python3动态导入-为什么不执行'as'?

时间:2018-07-23 06:19:22

标签: python import module exec

我有这段代码可以手动携带模块

exec("import" + moduleName + " as selectedModule")
importlib.reload(selectedModule)

但是这段代码使

name 'seletedModule' is not defined

在python2.x上没有发生。 如何在python3上导入它?

1 个答案:

答案 0 :(得分:3)

如果您需要动态导入库,请不要使用exec,这并不安全。

改为使用importlib.import_module

selected_module = importlib.import_module(module_name)
importlib.reload(selected_module)

对于所得到的错误,您可能是在函数范围内调用exec,因此您需要手动将globalslocals设置为相同在execUsing a function defined in an exec'ed string in Python 3)中。解决方法:

exec("<do-stuff>", globals())