程序化导入

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_moduleimp.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.modulesfromlist 参数等等,很容易忽略 importlib.import_module() 为你处理。