背景:
使用Python要导入的模块可能是动态构造的,此时需要动态导入。
方案1:使用importlib
import importlib
# 假设模块configs下有多个config文件
config_file = 'sth.cfg' # 其中一个config 文件
config_file = config_file.replace('.cfg', '')
params = importlib.import_module(config".format(config_file))
params.XX # 访问模块里的类、函数、变量等
方案2:使用exec(失败,原因可能是变量域,待排除)
# 假设模块configs下有多个config文件
config_file = 'sth.cfg' # 其中一个config 文件
config_file = config_file.replace('.cfg', '')
exec("from config.{} import config".format(config_file))