加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python动态导入模块——importlib

发布时间:2020-12-20 12:58:28 所属栏目:Python 来源:网络整理
导读:当在写代码时,我们希望能够根据传入的选项设置,如args.model来确定要导入使用的是哪个model.py文件,而不是一股脑地导入 这种时候就需要用上python的动态导入模块 比如此时文件结构为: ├── models│ ├── __init__.py│ ├── cycle_gan_model.py│

当在写代码时,我们希望能够根据传入的选项设置,如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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读