Python3 使用 exec 动态导入 - 为什么 'as' 不被执行?

标签 python import module exec

我有这个手动携带模块的代码

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 localsexec ( Using a function defined in an exec'ed string in Python 3 ) 中的相同。解决方法:

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

关于Python3 使用 exec 动态导入 - 为什么 'as' 不被执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51472607/

相关文章:

python - XAMPP - 在网页上执行 Python 脚本

python - 使用正则表达式并读取 .EGG 文件内的文件?

import - 在 .proto 文件中使用导入时出错

python - 为什么在我导入模块时 Python 会运行我的模块,我该如何停止它?

python - 根据前一行 python 数据框中存在的年份格式化月份

python - 如何将一系列 pandas 类型 pandas.Timestamp 与另一个系列类型 datetime.time 连接起来?

python - 使用 imp 模块在 python 中传递动态导入

php - 工作两年后突然出现 MYSQL "Malformed packet"on LOAD DATA LOCAL INFILE

python - 如何在python中控制系统上是否安装了库

python - 导入错误:没有名为 pynotify 的模块。安装模块时