python動態導入模塊——importlib


當在寫代碼時,我們希望能夠根據傳入的選項設置,如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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM