我有一个可以即时导入模块的脚本。由于模块名称在新版本出现后立即更改,因此很难检查脚本中是否也更改了特定模块名称。因此,我将模块名称保存在脚本的顶部,在变量中,如下例所示:
var1 = 'moduleName1_v04'
var2 = 'moduleName2_v08'
...................
import var1
...................
import var2
...................
但如果我这样写,我会收到错误。
问题是:如何使用示例中的变量导入模块?有可能吗?
答案 0 :(得分:7)
是的,您可以使用importlib.import_module
:
import importlib
module = importlib.import_module(var1)
或者,您可以使用__import__()
内置函数
>>> sys = __import__("sys")
>>> sys
<module 'sys' (built-in)>
__import__()
函数是解释器用于导入模块的函数。但是,不鼓励使用或修改它,以支持更简单,更安全的导入钩子,例如我上面提到的第一个。引用重要文档:
import函数调用此函数。它可以被替换 (通过导入builtins模块并分配给 builtins .__ import__)以改变导入的语义 声明,但通常会强烈劝阻这样做 更简单地使用导入钩子(参见PEP 302)来实现相同的目标和 不会导致代码采用默认导入的问题 实施正在使用中。直接使用__import __()也是如此 不赞成使用importlib.import_module()。
希望这有帮助!
答案 1 :(得分:4)
是的,你可以。
例如,使用importlib.import_module
:
>>> var1 = 'sys'
>>> import importlib
>>> mod = importlib.import_module(var1)
>>> mod
<module 'sys' (built-in)>