服务器运行IP-Adapter代码报错:找不到diffusers.models.autoencoder_kl模块
解决diffusers导入AutoencoderKL时的ModuleNotFoundError问题
问题描述
本地完成IP-Adapter图像生成任务开发后,迁移至带GPU的服务器运行,执行以下代码:
import torch from diffusers import StableDiffusionPipeline, StableDiffusionImg2ImgPipeline, StableDiffusionInpaintPipelineLegacy, DDIMScheduler, AutoencoderKL from PIL import Image from ip_adapter import IPAdapter
出现报错:
--------------------------------------------------------------------------- ModuleNotFoundError Traceback (most recent call last) File ~/IP-Adapter/imgToimg_venv/lib/python3.8/site-packages/diffusers/utils/import_utils.py:710, in _LazyModule._get_module(self, module_name) 709 try: ---> 710 return importlib.import_module("." + module_name, self.__name__) 711 except Exception as e: File /usr/lib/python3.8/importlib/__init__.py:127, in import_module(name, package) 126 level += 1 ---> 127 return _bootstrap._gcd_import(name[level:], package, level) File <frozen importlib._bootstrap>:1014, in _gcd_import(name, package, level) File <frozen importlib._bootstrap>:991, in _find_and_load(name, import_) File <frozen importlib._bootstrap>:973, in _find_and_load_unlocked(name, import_) ModuleNotFoundError: No module named 'diffusers.models.autoencoder_kl' The above exception was the direct cause of the following exception: RuntimeError Traceback (most recent call last) Cell In[33], line 2 1 import torch ----> 2 from diffusers import StableDiffusionPipeline, StableDiffusionImg2ImgPipeline, StableDiffusionInpaintPipelineLegacy, DDIMScheduler, AutoencoderKL 3 from PIL import Image 5 from ip_adapter import IPAdapter File <frozen importlib._bootstrap>:1039, in _handle_fromlist(module, fromlist, import_, recursive) File ~/IP-Adapter/imgToimg_venv/lib/python3.8/site-packages/diffusers/utils/import_utils.py:701, in _LazyModule.__getattr__(self, name) 699 elif name in self._class_to_module.keys(): 700 module = self._get_module(self._class_to_module[name]) ---> 701 value = getattr(module, name) 702 else: 703 raise AttributeError(f"module {self.__name__} has no attribute {name}") File ~/IP-Adapter/imgToimg_venv/lib/python3.8/site-packages/diffusers/utils/import_utils.py:700, in _LazyModule.__getattr__(self, name) 698 value = self._get_module(name) 699 elif name in self._class_to_module.keys(): ---> 700 module = self._get_module(self._class_to_module[name]) 701 value = getattr(module, name) 702 else: File ~/IP-Adapter/imgToimg_venv/lib/python3.8/site-packages/diffusers/utils/import_utils.py:712, in _LazyModule._get_module(self, module_name) 710 return importlib.import_module("." + module_name, self.__name__) 711 except Exception as e: ---> 712 raise RuntimeError( 713 f"Failed to import {self.__name__}.{module_name} because of the following error (look up to see its traceback):\n{e}" 714 ) from e RuntimeError: Failed to import diffusers.models.autoencoder_kl because of the following error (look up to see its traceback): No module named 'diffusers.models.autoencoder_kl'
已尝试升级diffusers库,但问题仍未解决。
解决方法
1. 重新安装指定版本的diffusers
AutoencoderKL的模块路径在diffusers不同版本中存在差异,卸载现有版本后安装稳定兼容版:
pip uninstall -y diffusers pip install diffusers==0.24.0
2. 确保激活正确的虚拟环境
避免全局环境与项目虚拟环境的包冲突,运行代码前激活服务器上的虚拟环境:
source ~/IP-Adapter/imgToimg_venv/bin/activate
3. 强制重装修复损坏的安装
如果安装不完整导致模块缺失,删除现有diffusers目录后强制重装:
rm -rf ~/IP-Adapter/imgToimg_venv/lib/python3.8/site-packages/diffusers pip install diffusers==0.24.0 --force-reinstall
4. 临时替换导入路径(兼容旧版本)
若上述方法无效,可尝试修改AutoencoderKL的导入语句,部分旧版本中该类位于vae模块下:
# 替换原导入语句中的AutoencoderKL部分 from diffusers.models.vae import AutoencoderKL
内容的提问来源于stack exchange,提问作者Anupam Gevariya
相关产品推荐
相关产品推荐

