在编程运行时,如何动态地将Python模块添加到软件包中?

要动态导入Python模块,可以使用importlib包的import_module(moduleName)函数。您需要将moduleName作为字符串。例如,

>>> from importlib import import_module
>>> moduleName = "os"
>>> globals()[moduleName] = import_module(moduleName)

如果要动态导入模块列表,甚至可以从for循环中调用它。例如,

>>> import importlib
>>> modnames = ["os", "sys", "math"]
>>> for lib in modnames:
...     globals()[lib] = importlib.import_module(lib)

该globals()调用返回的字典。我们可以为每个库设置lib键,作为导入模块时返回给我们的对象。

如果您已经导入了软件包,并且现在想动态导入其模块之一,则仍可以使用相同的功能并获得预期的结果。您要导入的模块应具有其全名,而不仅仅是模块名。例如,

>>> import importlib
>>> pack = 'datetime'
>>> mod = 'date'
>>> globals()[pack] = importlib.import_module(pack)
>>> globals()[pack + '.' + mod] = importlib.import_module(pack + '.' + mod)