python中动态加载模块主要有这几种方法:使用系统函数__import__();使用imp模块, 在3.4版本后弃用了,使用importlib代替;使用importlib模块;使用exec函数。而加载类和方法需要在加载模块后从模块中获取。下面分别介绍一下这几种方法。
import
使用__import__函数不需要额外引入其他包。直接上代码
importlib
importlib.import_module(name, package=None)
导入一个模块。参数 name 指定了以绝对或相对导入方式导入什么模块 (比如要么像这样 pkg.mod 或者这样 …mod)。如果参数 name 使用相对导入的方式来指定,那么那个参数 packages 必须设置为那个包名,作为解析这个包的锚点 (比如 import_module(’…mod’, ‘pkg.subpkg’) 将会导入 pkg.mod)。
import_module和__import__这两个函数之间最重要的区别是 import_module() 返回指定的包或模块(例如 pkg.mod),而 import() 返回顶级包或模块(例如 pkg)。
importlib.reload(module)
importlib还可以重新加载之前已经导入的module。参数为一个模块对象,在reload之前已经成功导入了。更详细的信息从官方文档了解:https://docs.python.org/3.7/library/importlib.html#importlib.reload
exec
直接看代码吧。
测试代码:
#import imp
import importlib
def test_import():
module_name = "class_define"
my_module = __import__(module_name)
print