【问题标题】:Python3 dynamic import with exec - why does 'as' not be executed?使用 exec 的 Python3 动态导入 - 为什么不执行“as”?
【发布时间】:2018-07-23 06:19:22
【问题描述】:

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

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

但是这段代码使

name 'seletedModule' is not defined

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

【问题讨论】:

    标签: python import module exec


    【解决方案1】:

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

    请改用importlib.import_module。

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

    至于您遇到的错误:您可能在函数范围内调用exec,因此您需要手动将globals 和locals 设置为在exec 中相同(@ 987654321@)。解决方法:

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

    【讨论】:

      猜你喜欢
      • 2015-06-18
      • 2015-09-14
      • 2020-06-20
      • 2012-09-12
      • 1970-01-01
      • 1970-01-01
      • 2012-08-06
      • 2019-10-31
      相关资源
      最近更新 更多