19.1.3 导入模块
给定一个绝地名或相对名,importlib中的高层API便可以简化导入一个模块的过程。使用一个相对模块名时,可以指定包含这个模块的包作为一个单独的参数。
import importlib
m1 = importlib.import_module('example.submodule')
print(m1)
m2 = importlib.import_module('.submodule',package='example')
print(m2)
print(m1 is m2)
import_module()的返回值是这个导入创建的模块对象。
如果无法导入这个模块,则import_module()会产生一个ImportError。
import importlib
try:
importlib.import_module('example.nosuchmodule')
except ImportError as err:
print('ERROR:',err)
错误消息包含缺少的模块名。
要重新加载一个现有的模块,可以使用reload()。
import importlib
m1 = importlib.import_module('example.submodule')
print(m1)
m2 = importlib.reload(m1)
print(m1 is m2)
reload()的返回值是新模块。取决于所用加载工具的类型,这可能是相同的模块实例。