使用变量导入Python模块

15 浏览
0 Comments

使用变量导入Python模块

这个问题已经有了答案

如何动态导入模块,给出模块名字符串?

我有一个脚本,可以实时导入模块。因为模块名称在出现新版本时会更改,所以很难检查脚本中的特定模块名称是否也更改了。因此,我将模块名称保存在脚本顶部的变量中,就像这个例子一样:

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

但是如果我像这样写,就会出现错误。

问题是:如何使用变量导入模块,就像示例中那样?是否可能?

admin 更改状态以发布 2023年5月21日
0
0 Comments

是的,你可以。

例如,使用 importlib.import_module:

>>> var1 = 'sys'
>>> import importlib
>>> mod = importlib.import_module(var1)
>>> mod

0
0 Comments

使用importlib.import_module即可轻松实现:

import importlib
module = importlib.import_module(var1)

或者使用内置函数__import__()

>>> sys = __import__("sys")
>>> sys

__import__()函数是解释器用于导入模块的函数。然而,为了使用更简单、更安全的导入钩子,不建议使用或修改此函数,如我上面提到的第一个。重要的文档引用如下:

此函数由导入语句调用。可以将其替换(通过导入builtin模块并将其分配给builtin.__import__)以更改导入语句的语义,但是强烈不建议这样做,因为使用导入钩子(参见PEP 302)通常更简单以实现相同的目标并且不会导致代码假设默认的导入实现在使用时出现问题。直接使用__import__()也不建议,而建议使用importlib.import_module()。

希望这可以帮助您!

0