使用importlib动态导入python类
今天跟chatgpt学了一招,场景如下:
我写了好多个模型在model/这个文件夹下,有florence2_qwen、nougat_qwen等等,
我现在要对不同的模型做不同的实验,使用哪个模型跟我main函数指定有关,比如我指定了“florence2_qwen”这个模型,main中就得给我导入`from model.florence2_qwen.armodel import ARForMultimodalGeneration `这个类,我指定了“nougat_qwen”,main中就得给我导入`from model.nougat_qwen.armodel import ARForMultimodalGeneration `,可以发现中间模型的名字是变的,怎么办呢?
使用importlib!
代码如下:
import importlib
model = "florence2_qwen"
dynamic_module_name = f"model.{model}.armodel"
class_name = "ARForMultimodalGeneration"
module = importlib.import_module(dynamic_module_name)
target_class = getattr(module, class_name)
print(target_class)
然后就成功特异性的导入你想导入的类啦。