使用Python中的变量导入模块

Rom*_*lus 6 python import module

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

var1 = 'moduleName1_v04'
var2 = 'moduleName2_v08'
...................
import var1
...................
import var2
...................
Run Code Online (Sandbox Code Playgroud)

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

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

aIK*_*Kid 7

是的,您可以通过以下方式轻松实现importlib.import_module:

import importlib

module = importlib.import_module(var1)
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用__import__()内置功能

>>> sys = __import__("sys")
>>> sys
<module 'sys' (built-in)>
Run Code Online (Sandbox Code Playgroud)

__import__()函数是解释器用于导入模块的函数.但是,不鼓励使用或修改它,以支持更简单,更安全的导入钩子,例如我上面提到的第一个.引用重要文档:

import语句调用此函数.它可以替换(通过导入builtins模块并分配给builtins .__ import__)以更改import语句的语义,但强烈建议不要这样做,因为使用导入钩子(参见PEP 302)通常更容易实现相同的目标,并不会导致代码的问题,假设默认导入实现正在使用中.不鼓励直接使用__import __()以支持importlib.import_module().

希望这可以帮助!


fal*_*tru 6

是的你可以。

例如,使用importlib.import_module

>>> var1 = 'sys'
>>> import importlib
>>> mod = importlib.import_module(var1)
>>> mod
<module 'sys' (built-in)>
Run Code Online (Sandbox Code Playgroud)