importlib模块

importlib.import_module(name, package=None)

动态引入引入一个模块。name可以是相对路径和绝对路径,如果是相对路径的话,这package就是相应的包名

foo.py文件

coding:UTF-8

def main():
print(name)

与foo.py同一文件夹下的文件


import importlib
def dynamic_import(module):
return importlib.import_module(module)
if __name__ == '__main__':
module = dynamic_import('foo') #引入foo模块
module.main() #调用foo模块的main()方法

importlib.util.find_spec(name, package=None)

模块导入检测


import importlib
def check_module(module_name):
module_spec = importlib.util.find_spec(module_name)
if module_spec is None:
print('Module:{} not found'.format(module_name))
return None
else:
print('Module:{} can be imported!'.format(module_name))
return module_spec
def import_module_from_spec(module_spec):
module = importlib.util.module_from_spec(module_spec)
module_spec.loader.exec_module(module)
return module
if __name__ == '__main__':
module_spec = check_module('fake_module')
module_spec = check_module('collections')
if module_spec:
module = import_module_from_spec(module_spec)
print(module)

Module:fake_module not found
Module:collections can be imported!
init.py'>

你可能感兴趣的:(importlib模块)