python动态导入模块――importlib

匿名 (未验证) 提交于 2019-12-02 22:51:30

当在写代码时,我们希望能够根据传入的选项设置,如args.model来确定要导入使用的是哪个model.py文件,而不是一股脑地导入

这种时候就需要用上python的动态导入模块

比如此时文件结构为:

├―― models │   ├―― __init__.py │   ├―― cycle_gan_model.py │   └―― pix2pix_model.py └―― train.py

假设此时参数的设置中有:

import argparse  parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument('--model', type=str, default='cycle_gan', help='chooses which model to use. [cycle_gan | pix2pix | test | colorization]') args = parser.parse_args()

此时如果想要根据传入的参数args.model的值决定导入哪个模块,则:

import importlib model_filename = "models." + args.model + "_model" # 根据指定的args.model来导入本地models文件夹中的相应args.model + '_model.py'模块 # 假设如果args.model = cycle_gan,则导入模块models.cycle_gan_model modellib = importlib.import_module(model_filename)

然后就能够使用modellib来调用cycle_gan_model模块

等价于:

from models import cycle_gan_model as modellib

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!