跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

Stable Diffusion WebUI 启动报错:MessageFactory 无 GetPrototype 属性修复方案

Stable Diffusion WebUI 启动时报错 AttributeError: 'MessageFactory' object has no attribute 'GetPrototype'。原因是 Protobuf 版本过高(4.x+)移除了旧 API,而插件依赖 3.x。解决方案是在三个关键配置文件(requirements.txt, requirements_versions.txt, extensions 下的 requirements.txt)中强制锁定 protobuf 版本为 3.20.2。同时检查网络代理配置以确保依赖正常安装。修复后无需手动 pip install,重启即可正常运行。

NodeJser发布于 2026/4/6更新于 2026/7/2472 浏览
Stable Diffusion WebUI 启动报错:MessageFactory 无 GetPrototype 属性修复方案

Stable Diffusion WebUI 启动报错:AttributeError: MessageFactory 无 GetPrototype 属性

一、问题背景

在使用 Stable Diffusion WebUI 时,安装 sd-webui-roop 插件后启动出现典型的 Protobuf 版本冲突错误:

AttributeError: 'MessageFactory' object has no attribute 'GetPrototype'

该错误通常意味着:

  • Protobuf 被自动升级到了 4.x / 5.x / 6.x 系列版本
  • ControlNet、roop 等插件依赖的是 Protobuf 3.x 的旧 API
  • 新版本 Protobuf 移除了 GetPrototype 方法,导致兼容性崩溃

此问题常见于插件依赖约束不严格的环境,pip 可能自动将 Protobuf 升级到最新版,导致每次重启都触发升降级操作。

二、问题原因深度分析

通过日志分析和依赖回溯,发现问题由以下因素共同导致:

1. sd-webui-roop 的 requirements.txt 没有限制 Protobuf 版本

原始内容如下:

insightface==0.7.3 onnx==1.14.0 onnxruntime==1.15.0 opencv-python==4.7.0.72 ifnude cython

注意:这里没有任何关于 protobuf 的版本约束。

2. onnx==1.14.0 的内置依赖要求 protobuf>=3.20.2

但它没有设置上限,于是 pip 会认为可以安装最新版(如 6.33.4),导致 Protobuf 被自动升级到不兼容版本。

3. ControlNet 等插件依赖 Protobuf 3.x 的旧 API

Protobuf 4.x+ 对 Python API 做了大量不兼容修改,其中就包括:

MessageFactory.GetPrototype() → 被移除

于是出现启动报错。

三、环境信息(可复现)

为了能够复刻修复过程,参考环境如下:

  • Windows 11
  • Python 3.11.13
  • 虚拟环境:.venv
  • CMake 4.2.1
  • pip
  • WebUI:v1.10.1
  • 插件:sd-webui-roop(最新版)、sd-webui-controlnet v1.1.455

四、完整修复方案(可直接操作)

下面是经过验证的完整修复步骤。

步骤 1:修改 3 个关键文件,统一锁定 protobuf==3.20.2

这个版本是'黄金兼容版本':

  • 满足 onnx==1.14.0 的最低要求(>=3.20.2)
  • 属于 3.x 系列,保留旧 API
  • 不会触发编译问题

需要修改的文件如下:

1)stable-diffusion-webui/requirements.txt

添加或修改:

protobuf==3.20.2
2)stable-diffusion-webui/requirements_versions.txt

添加或修改:

protobuf==3.20.2
3)extensions/sd-webui-roop/requirements.txt

在末尾添加:

protobuf==3.20.2

修改后完整内容如下:

insightface==0.7.3 onnx==1.14.0 onnxruntime==1.15.0 opencv-python==4.7.0.72 ifnude cython protobuf==3.20.2
步骤 2:保持 webui-user.bat 网络配置正确(避免下载失败)

以下是推荐的稳定配置:

@echo off
set HTTP_PROXY=http://127.0.0.1:7897
set HTTPS_PROXY=http://127.0.0.1:7897
set NO_PROXY=127.0.0.1,localhost
set HF_ENDPOINT=https://hf-mirror.com
set PYTHON=.venv\Scripts\python.exe
set GIT=
set VENV_DIR=.venv
set COMMANDLINE_ARGS=--xformers --gradio-queue --disable-nan-check
call webui.bat

重点:

  • 必须设置 NO_PROXY,否则容易出现 Expecting value 报错
  • HF_ENDPOINT 加速模型下载
步骤 3:重新启动 WebUI

不需要手动 pip install,WebUI 会自动处理依赖。

启动成功的标志:

  • 无 GetPrototype 报错
  • 无 onnx 编译错误
  • 所有插件正常加载
  • 可以正常生成图片

五、修复成功验证

启动日志应显示:

Requirement already satisfied: protobuf==3.20.2

同时出现:

roop - INFO - roop v0.0.2
ControlNet - INFO - ControlNet v1.1.455

并且可以正常生成图片,进度条 100% 完成。

六、经验总结

1. Protobuf 3.20.2 是 WebUI 的最佳兼容版本

它同时满足:

  • onnx>=1.13.0 的最低要求
  • ControlNet/roop 的旧 API 要求
  • 不会触发编译失败
2. 必须同时修改 3 个文件

否则会被插件的 requirements.txt 覆盖,导致版本再次被升级。

3. 不要随意升级 Protobuf

Protobuf 4.x+ 对 WebUI 生态几乎完全不兼容。

4. 网络配置非常关键

错误的代理设置会导致依赖安装失败,从而触发各种奇怪的报错。

目录

  1. Stable Diffusion WebUI 启动报错:AttributeError: MessageFactory 无 GetPrototype 属性
  2. 一、问题背景
  3. 二、问题原因深度分析
  4. 1. sd-webui-roop 的 requirements.txt 没有限制 Protobuf 版本
  5. 2. onnx==1.14.0 的内置依赖要求 protobuf>=3.20.2
  6. 3. ControlNet 等插件依赖 Protobuf 3.x 的旧 API
  7. 三、环境信息(可复现)
  8. 四、完整修复方案(可直接操作)
  9. 步骤 1:修改 3 个关键文件,统一锁定 protobuf==3.20.2
  10. 1)stable-diffusion-webui/requirements.txt
  11. 2)stable-diffusion-webui/requirements_versions.txt
  12. 3)extensions/sd-webui-roop/requirements.txt
  13. 步骤 2:保持 webui-user.bat 网络配置正确(避免下载失败)
  14. 步骤 3:重新启动 WebUI
  15. 五、修复成功验证
  16. 六、经验总结
  17. 1. Protobuf 3.20.2 是 WebUI 的最佳兼容版本
  18. 2. 必须同时修改 3 个文件
  19. 3. 不要随意升级 Protobuf
  20. 4. 网络配置非常关键
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • OpenClaw 视觉自动化:无需接口,让 AI 直接操作软件界面
  • C++ 多态底层实现原理详解
  • C++ STL 容器:基于红黑树模拟实现 map 和 set
  • 构建与 GitHub 深度集成的自动化工作流:AI 辅助开发实战指南
  • 卷积神经网络(CNN)核心原理与 TensorFlow 实战
  • 嵌入式与工控核心技术解析:C#, PLC, STM32, FPGA, DSP 及 HMI
  • 企业级 RAG 系统的构建、优化与效益分析
  • Windows 10/11 部署 OpenClaw 指南:从环境搭建到机器人互联
  • OpenClaw 结合 cpolar 实现本地 AI 公网访问指南
  • 2025 中秋月相计算与月球数据可视化实战
  • C++ vector 容器使用、迭代器失效与模拟实现
  • 在 WSL2 上部署 OpenClaw 的实操记录
  • Isaac Lab Cartpole 强化学习训练流程详解
  • OpenClaw Skills 技能系统入门与开发指南
  • 医疗 AI 败血症预测:从数据模拟到模型部署的完整 Python 实践
  • Meson:现代 C/C++ 构建系统详解
  • AiNiee 桌面 AI 翻译工具功能详解与快速上手
  • Tesseract.js 实现 JavaScript OCR 文本识别教程
  • AI 超参数调优:贝叶斯优化与 Optuna 实战指南
  • OpenPPT:基于 Web 的智能 PPT 在线编辑器

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online