2025-02-21
AI
00
请注意,本文编写于 70 天前,最后修改于 70 天前,其中某些信息可能已经过时。

目录

问题介绍
简略版解决方案:
详细版解决过程:
解决过程
最终解决方案总结
经验总结

问题介绍

问题简介

我在使用 Stable Diffusion WebUI 时,试图启动 ControlNet 扩展,却遇到了启动错误。最初的错误信息如下:

text
ControlNet preprocessor location: D:\AI\stable-diffusion-webui\extensions\sd-webui-controlnet\annotator\downloads *** Error loading script: controlnet.py AttributeError: type object 'CalculatorOptions' has no attribute 'RegisterExtension'

随后,通过检查依赖冲突,发现 open-clip-torchmediapipeprotobuf 的版本要求不一致:

text
open-clip-torch 2.20.0 has requirement protobuf<4, but you have protobuf 5.29.3. mediapipe 0.10.14 has requirement protobuf<5,>=4.25.3, but you have protobuf 5.29.3.

问题分析

  • 依赖冲突open-clip-torch==2.20.0 需要 protobuf<4,而 mediapipe==0.10.14 需要 protobuf>=4.25.3, <5,当前安装的 protobuf==5.29.3 超出两者范围。
  • 版本不兼容:即使修复了依赖冲突,open-clip-torch 2.20.0mediapipe 0.10.14 所需的 protobuf 没有交集,所以无法在不变更 open-clip-torchmediapipe 版本情况加解决问题!

我的环境

  • Windows11 stable
  • 安装方式:克隆仓库本地安装(venv环境管理)
  • diffusion webui版本: v1.10.1
  • python: 3.10.6
  • torch: 2.1.2+cu121
  • xformers: N/A
  • gradio: 3.41.2

简略版解决方案:

  1. 进入 stable-diffusion-webui\venv\Scripts 文件夹,打开 CMD 窗口,执行 activate 进入 venv 环境!
  2. 执行 python -m pip check,找出冲突依赖,发现是 open-clip-torch 2.20.0mediapipe 0.10.14protobuf 三者冲突!
  3. 执行 python -m pip install --upgrade open-clip-torch 升级 open-clip-torch
  4. 执行 python -m pip install protobuf==3.20.3 降级;
  5. 执行 python -m pip install mediapipe==0.10.11 降级
  6. 再次启动 Webui,问题解决!

提示:每个人的安装环境不同,解决方式和版本可能不同,请自行尝试适合自己的解决方案或以来版本!

详细版解决过程:

解决过程

  1. 检查依赖冲突:

    • 使用 python -m pip check 发现 protobuf 版本冲突。

    • 尝试升级 open-clip-torch 和安装 protobuf==4.25.4

      sh
      python -m pip install --upgrade open-clip-torch python -m pip install protobuf==4.25.4
    • 尝试后发现虽然冲突解决了,但是错误仍任存在!

  2. 调整 mediapipeprotobuf 版本:

    • 降级 mediapipe0.10.11,并搭配 protobuf==3.20.3

      sh
      python -m pip install mediapipe==0.10.11 python -m pip install protobuf==3.20.3
    • 再次运行 python -m pip check,确认无冲突。

  3. 验证修复:启动 WebUI,ControlNet 正常加载,未再出现错误!

最终解决方案总结

最终使用以下命令修复:

sh
# 升级 open-clip-torch 截至本文记录,自动升级到了 2.30.0 python -m pip install --upgrade open-clip-torch # 降级 protobuf==3.20.3 python -m pip install protobuf==3.20.3 # 降级 mediapipe==0.10.11 python -m pip install mediapipe==0.10.11

经验总结

  • 依赖检查工具:用 pip check 快速定位冲突。
  • 版本调整:尝试依赖的不同版本,并匹配适合的 protobuf。
  • 问题复现时:先检查 pip listpip check 输出,调整版本后逐步测试。

这次修复让我学会了如何处理 Python 依赖冲突,下次遇到类似问题可参考此笔记快速解决!

本文作者:DingDangDog

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!