使用Hugging Face DiffusionPipeline时遇TypeError问题求助
解决导入DiffusionPipeline时的
TypeError: expected string or bytes-like object错误 问题描述
尝试使用Hugging Face的DiffusionPipeline实现文本生成图像功能,在导入阶段触发错误:TypeError: expected string or bytes-like object,完整报错回溯如下:
The traceback: File "c:\Users\BHAVYA SHAH\Desktop\Artificial Intelligence\app.py", line 9, in <module> from diffusers import DiffusionPipeline File "C:\Users\BHAVYA SHAH\anaconda3\lib\site-packages\diffusers\__init__.py", line 26, in <module> from .pipelines import DDIMPipeline, DDPMPipeline, KarrasVePipeline, LDMPipeline, PNDMPipeline, ScoreSdeVePipeline File "C:\Users\BHAVYA SHAH\anaconda3\lib\site-packages\diffusers\pipelines\__init__.py", line 11, in <module> from .latent_diffusion import LDMTextToImagePipeline File "C:\Users\BHAVYA SHAH\anaconda3\lib\site-packages\diffusers\pipelines\latent_diffusion\__init__.py", line 6, in <module> from .pipeline_latent_diffusion import LDMBertModel, LDMTextToImagePipeline File "C:\Users\BHAVYA SHAH\anaconda3\lib\site-packages\diffusers\pipelines\latent_diffusion\pipeline_latent_diffusion.py", line 9, in <module> from transformers.activations import ACT2FN File "C:\Users\BHAVYA SHAH\anaconda3\lib\site-packages\transformers\__init__.py", line 30, in <module> from . import dependency_versions_check File "C:\Users\BHAVYA SHAH\anaconda3\lib\site-packages\transformers\dependency_versions_check.py", line 17, in <module> from .utils.versions import require_version, require_version_core File "C:\Users\BHAVYA SHAH\anaconda3\lib\site-packages\transformers\utils\__init__.py", line 34, in <module> from .generic import ( File "C:\Users\BHAVYA SHAH\anaconda3\lib\site-packages\transformers\utils\generic.py", line 29, in <module> from .import_utils import is_flax_available, is_tf_available, is_torch_available, is_torch_fx_proxy File "C:\Users\BHAVYA SHAH\anaconda3\lib\site-packages\transformers\utils\import_utils.py", line 376, in <module> torch_version = version.parse(importlib_metadata.version("torch")) File "C:\Users\BHAVYA SHAH\anaconda3\lib\site-packages\packaging\version.py", line 49, in parse return Version(version) File "C:\Users\BHAVYA SHAH\anaconda3\lib\site-packages\packaging\version.py", line 264, in __init__ match = self._regex.search(version) TypeError: expected string or bytes-like object
解决方案
从报错回溯可判断,问题根源是importlib_metadata.version("torch")未返回有效字符串版本号,大概率是Torch安装损坏或依赖库版本不兼容导致,按以下步骤处理:
重新安装Torch
先卸载当前可能损坏的Torch安装:pip uninstall torch -y根据硬件环境安装对应版本的Torch:
- 若使用CUDA 11.8:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 - 若使用CPU:
pip install torch torchvision torchaudio
- 若使用CUDA 11.8:
验证Torch版本获取是否正常
运行以下代码检查版本读取是否正常:import importlib_metadata print(importlib_metadata.version("torch"))若能正常输出版本号,说明Torch安装修复成功;若仍报错,继续下一步。
更新版本解析依赖库
packaging和importlib_metadata负责版本解析,版本过旧可能引发异常:pip install --upgrade packaging importlib_metadata更新核心依赖库
确保Diffusers和Transformers为最新兼容版本:pip install --upgrade diffusers transformers
内容的提问来源于stack exchange,提问作者Bhavya Shah
相关产品推荐
相关产品推荐

