程序化导入
Python 2.x >= 2.7
要通过函数调用导入模块,请使用 importlib
模块(从 2.7 版开始包含在 Python 中):
import importlib
random = importlib.import_module("random")
importlib.import_module()
函数还将直接导入包的子模块:
collections_abc = importlib.import_module("collections.abc")
对于旧版本的 Python,请使用 imp
模块。
Python 2.x <= 2.7
使用 imp.find_module
和 imp.load_module
函数执行编程导入。
取自标准库文档
import imp, sys
def import_module(name):
fp, pathname, description = imp.find_module(name)
try:
return imp.load_module(name, fp, pathname, description)
finally:
if fp:
fp.close()
千万不要使用 __import__()
以编程方式导入模块! 有一些微妙的细节涉及 sys.modules
,fromlist
参数等等,很容易忽略 importlib.import_module()
为你处理。