Python3 使用 exec 动态导入 - 为什么 'as' 没有被执行?
Python3 dynamic import with exec - why does 'as' not be executed?
我有这个手动携带模块的代码
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
(Using a function defined in an exec'ed string in Python 3) 中相同。解决方法:
exec("<do-stuff>", globals())
我有这个手动携带模块的代码
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
(Using a function defined in an exec'ed string in Python 3) 中相同。解决方法:
exec("<do-stuff>", globals())