10.10 通过字符串�导入模�¶

问题¶

你想导入一个模�,但是模�的�字在字符串里。你想对字符串调用导入命令。

解决方案¶

使用importlib.import_module()函数�手动导入�字为字符串给出的一个模�或者包的一部分。举个例�:

>>> import importlib
>>> math = importlib.import_module('math')
>>> math.sin(2)
0.9092974268256817
>>> mod = importlib.import_module('urllib.request')
>>> u = mod.urlopen('http://www.python.org')
>>>

import_module�是简�地执行和import相�的步骤,但是返回生�的模�对象。你�需�将其存储在一个��,然��正常的模�一样使用。

如果你正在使用的包,import_module()也�用于相对导入。但是,你需�给它一个�外的�数。例如:

import importlib
# Same as 'from . import b'
b = importlib.import_module('.b', __package__)

讨论¶

使用import_module()手动导入模�的问题通常出现在以��方�编写修改或覆盖模�的代�时候。例如,也许你正在执行��自定义导入机制,需�通过�称�加载一个模�,通过补�加载代�。

在旧的代�,有时你会看到用于导入的内建函数__import__()。尽管它能工作,但是importlib.import_module() 通常更容易使用。

自定义导入过程的高级实例�10.11�节