使用Python中的变量导入模块

时间:2013-11-20 12:51:35

标签: python import module

我有一个可以即时导入模块的脚本。由于模块名称在新版本出现后立即更改,因此很难检查脚本中是否也更改了特定模块名称。因此,我将模块名称保存在脚本的顶部,在变量中,如下例所示:

var1 = 'moduleName1_v04'
var2 = 'moduleName2_v08'
...................
import var1
...................
import var2
...................

但如果我这样写,我会收到错误。

问题是:如何使用示例中的变量导入模块?有可能吗?

2 个答案:

答案 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)>