有时候,我们很需要在程序运行的过程中,根据变量或者配置动态的决定导入哪个模块。

 

假设我们需要导入的模块module_12定义在subPack1文件夹下面,内容如下。

 

 
  
  1. def funcA12(): 
  2.     print('funcA12 in module_12'
  3.     return 
  4.  
  5.  
  6. import os 
  7. print  os.path.join(os.path.abspath(os.path.dirname(__file__)),('templates')) 
  8.  
  9. print os.path.join(os.path.relpath(os.path.dirname(__file__)),'..templates'

 

在这个模块的上层需要动态导入这个模块,可以使用下面的代码。

使用importlib模块的import_module方法就可以实现动态的导入。

 
  
  1. import importlib 
  2. mo =importlib.import_module('subPack1.module_12') 
  3. mo.funcA12()