彻底解决 Stable Diffusion WebUI 启动报错:AttributeError: ‘MessageFactory’ object has no attribute ‘GetProto

彻底解决 Stable Diffusion WebUI 启动报错:AttributeError: ‘MessageFactory’ object has no attribute ‘GetProto

彻底解决 Stable Diffusion WebUI 启动报错:AttributeError: ‘MessageFactory’ object has no attribute ‘GetPrototype’

Stable Diffusion web UI
sd-webui-roop
【技术分享】ComfyUI中protobuf版本兼容性问题的优雅解决方案:猴子补丁实战
告别环境崩溃:ONNX 与 Protobuf 版本兼容性指南


一、问题背景

最近在使用 Stable Diffusion WebUI(v1.10.1)时,安装了 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 方法,导致兼容性崩溃

这个问题非常常见,尤其是在 2025–2026 年期间,很多插件的依赖约束不严格,会让 pip 自动把 Protobuf 升级到最新版。而且几乎每次重新启动都会出现 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 会认为:

protobuf >= 3.20.2 → 可以安装最新版(如 6.33.4) 

于是 Protobuf 被自动升级到不兼容版本。


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

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

MessageFactory.GetPrototype() → 被移除 

于是出现启动报错。



三、环境信息(可复现)

为了让大家能够 100% 复刻修复过程,我把环境也公开出来:

  • Windows 11 专业工作站版 26H1(28020.1371)
  • Python 3.11.13(基于 EPGF 架构,非 CPython/Anaconda)
  • 虚拟环境:.venv
  • CMake 4.2.1
  • pip 25.3
  • 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 网络配置正确(避免下载失败)

以下是我使用的稳定配置:

【SD WebUI踩坑】启动报错 Expecting value: line 1 column 1 (char 0) 的终极解决方案
@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. 网络配置非常关键

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


5. 应用猴子补丁

如果你愿意折腾,可以尝试我们实践过的“猴子补丁”办法,专门针对 在不降级 Protobuf 版本的情况下,解决 Protobuf 的兼容性问题。

【技术分享】ComfyUI中protobuf版本兼容性问题的优雅解决方案:猴子补丁实战


七、结语

通过统一锁定 Protobuf 版本,我们成功解决了 WebUI 启动报错问题,同时保证了 roop、ControlNet 等插件的正常运行。

如果你也遇到了类似问题,直接按照本文步骤操作即可实现修复。


Read more

智能家居生态系统中AI应用的变革,由AI应用架构师引领

从“指令执行”到“主动理解”:AI如何重构智能家居?架构师的底层逻辑与实践 关键词 智能家居生态、AI应用架构、主动感知、多设备协同、用户意图理解、边缘-云协同、个性化推荐 摘要 十年前,我们对“智能家居”的想象是“用手机开灯泡”;今天,我们期待的是“加班晚归时,家门自动打开,暖气已暖,米饭刚熟,音乐刚好”。这背后的质变,是AI对传统智能家居生态的底层重构——从“被动响应指令”到“主动理解需求”。 本文将以AI应用架构师的视角,拆解这场变革的核心逻辑: * 如何让设备从“听指令”进化到“猜需求”? * 如何破解多设备“各自为战”的信息孤岛? * 如何在“智能”与“隐私”之间找到平衡? 通过真实场景案例、可落地的架构设计、代码示例与生活化比喻,

VRM4U插件终极指南:在Unreal Engine 5中轻松驾驭VRM模型

VRM4U插件终极指南:在Unreal Engine 5中轻松驾驭VRM模型 【免费下载链接】VRM4URuntime VRM loader for UnrealEngine4 项目地址: https://gitcode.com/gh_mirrors/vr/VRM4U 还在为Unreal Engine 5中导入VRM模型而困扰吗?今天我要向你介绍一款能够彻底改变你工作流程的神器——VRM4U插件!这款专为UE5设计的VRM文件导入工具,让你能够在几分钟内完成传统方法需要数小时才能完成的任务。无论你是VR内容开发者还是游戏制作人,这篇文章都将为你打开一扇通往高效创作的大门。 项目核心价值:为什么选择VRM4U VRM4U插件是Unreal Engine 5生态中的一款革命性工具,专门解决VRM模型导入的各种难题。它不仅仅是一个简单的格式转换器,更是一套完整的3D角色解决方案。 解决的核心痛点: * 复杂的材质转换过程 * 骨骼映射的兼容性问题 * 动画数据的完整保留 * 移动端性能优化挑战 零基础快速上手:安装配置一气呵成 获取插件 首先需要获取VRM4U插件

B站直播弹幕机器人:解放双手的7大核心功能与3分钟快速上手指南

B站直播弹幕机器人:解放双手的7大核心功能与3分钟快速上手指南 【免费下载链接】Bilibili-MagicalDanmaku【神奇弹幕】哔哩哔哩直播万能场控机器人,弹幕姬+答谢姬+回复姬+点歌姬+各种小骚操作,目前唯一可编程机器人 项目地址: https://gitcode.com/gh_mirrors/bi/Bilibili-MagicalDanmaku 你是否遇到过直播时手忙脚乱的困境?一边要专注内容创作,一边还要手动回复弹幕、感谢礼物、管理秩序,分身乏术导致观众体验下降。B站直播弹幕机器人作为智能场控助手,通过弹幕管理、自动答谢、智能回复和点歌系统四大核心功能模块,帮助主播提升30%互动率,同时减少50%重复操作时间。本文将从痛点分析、功能矩阵、场景化应用到进阶技巧,全面解析如何利用这款工具打造高效智能的直播间。 直播场控的四大痛点与解决方案 直播时最令人头疼的莫过于信息过载——弹幕刷屏导致重要评论被淹没、礼物答谢不及时引发观众不满、重复问题占用大量精力、点歌请求杂乱无章。这些问题直接影响直播质量和观众留存率,而手动操作往往事倍功半。 B站直播弹幕机器人通过模块化设

Modelsim仿真软件的,安装/破解/使用教程大全

仿真前言         作为一名FPGA工程师,在做FPGA开发时,使用仿真一定是最重要的,有些人喜欢写完代码直接上板子调试,根本不会做一点点仿真;如果是简单的逻辑代码,有十足的把握,那就不用仿真,可以直接上板子调试,但是,如果您是在做工程的开发,很多代码都是第一次编写调试,那么,代码的仿真是一定要做的,你要问我为啥,我个人觉得,每次把自己写完的代码,放到modelsim上面仿真看一下波形,就像考试的时候,拿着参考答案在做题一样的感觉,各个波形的变化你都会看的一清二楚,但是如果你用在线逻辑分析仪看RTL的仿真,那真的是太耗费时间;         我知道这个时候就会有人说了,Modelsima仿真有啥用呀,和下板子调试完全是两个概念,包括信号延迟,信号质量,眼图等都不一样,说的也对,但是实际情况是,这些人眼高手低,觉得仿真这种操作太麻烦;仿真虽然不能完全模拟真实的硬件信号,硬件延迟也没法准确仿真,但是他能让你在开发的时候,规避掉95%的因为代码引起的错误,这会让你在调试阶段节省很多时间;然后剩下的调试你必须 要在硬件调试时才会发现并且解决;        在调试阶段,FPGA为