首页 游戏 软件 资讯 排行榜 专题
首页
AI
彻底解决 Stable Diffusion WebUI 启动报错:AttributeError: ‘MessageFactory’ object has no attribute ‘GetProto

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

热心网友
68
转载
2026-03-31

彻底解决 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。
  • 新版本直接移除了旧方法 GetPrototype,导致插件一调用就崩溃。

这可不是个案。尤其是在最近两年,很多插件的依赖约束写得不严格,pip 在安装时就会自作主张,把 Protobuf 一路升级到最新版。更糟的是,这个过程可能每次重启 WebUI 都会重复一次,不仅导致报错,还严重拖慢了启动速度。



二、问题原因深度分析

通过梳理日志和追溯依赖关系,问题根源逐渐清晰,主要是以下几个环节的连锁反应:

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() → 已废弃删除

当插件尝试调用这个不存在的方法时,启动报错便不可避免。



三、环境信息(可复现)

为了确保大家能完全复现并验证修复过程,这里公开我的具体环境,供你参考对照:

  • 操作系统: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

为什么是 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=https://127.0.0.1:7897 set HTTPS_PROXY=https://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

完成以上修改后,直接重新启动 WebUI 即可。无需手动执行 pip install 命令,启动脚本会自动处理依赖安装。

成功启动的标志非常明确:

  • 启动日志中不再出现 GetPrototype 相关报错。
  • 没有关于 onnx 的编译错误信息。
  • 所有已安装插件(如 roop, ControlNet)均显示加载正常。
  • 能够顺利进入界面并正常生成图片。


五、修复成功验证

如何确认修复真的生效了?查看启动日志,你应该能看到如下关键信息:

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 优先级很高,如果不同步锁定版本,在后续安装中它又会把 Protobuf 版本“拉”上去,导致问题复现。


3. 不要随意升级 Protobuf

在这个生态里,Protobuf 4.x 及以上版本几乎可以视为“不兼容版本”。除非所有插件都明确声明支持,否则坚守 3.x 系列是更稳妥的选择。


4. 网络配置非常关键

看似无关的网络代理设置,往往是许多依赖安装失败和诡异报错的源头。一个正确的配置能帮你省去大量排查时间。


5. 备用方案:应用猴子补丁

当然,如果你是一名喜欢深究的技术爱好者,还有一种更“硬核”的解决方案:通过“猴子补丁”(Monkey Patch)的方式,在不降级 Protobuf 版本的前提下,动态修复 API 兼容性问题。这为我们提供了另一种解题思路。

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



七、结语

通过统一锁定 Protobuf 版本这一核心操作,我们成功绕开了版本冲突的陷阱,确保了 Stable Diffusion WebUI 及其重要插件的稳定运行。环境配置从来不是魔法,而是对依赖关系的精确管理。

如果你也碰到了同样的启动报错,不必焦虑,直接参照本文的步骤操作,问题大概率能迎刃而解。


来源:https://blog.csdn.net/u014451778/article/details/157098307?ops_request_misc=elastic_search_misc&request_id=3408c9629226947a81126d714010d25d&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~ElasticSearch~search_v2-4
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

Windows 11 如何开启 AV1 硬件编码以提升视频处理效率
系统平台
Windows 11 如何开启 AV1 硬件编码以提升视频处理效率

启用Windows11原生AV1硬件编码需满足系统版本、驱动和应用三方面要求。系统需为24H2及以上,显卡驱动需更新至2025年3月后发布的WDDM3 2兼容版本。在OBSStudio或FFmpeg等支持的应用中正确配置编码设置,并可通过任务管理器监控GPU编码负载以验证硬件加速是否生效。最终可使用MediaInfo等工具确认输出文件为AV1硬件编码。

热心网友
05.14
UOS系统远程连接Windows电脑的详细教程与工具推荐
系统平台
UOS系统远程连接Windows电脑的详细教程与工具推荐

统信UOS远程连接Windows电脑有多种方案。可使用原生Remmina客户端或系统自带工具直连RDP,适合局域网。借助向日葵等工具可实现外网穿透。通过配置xrdp可建立反向连接作为跳板。TeamViewer则提供跨平台的临时远程控制。用户可根据网络环境和权限需求选择合适方法。

热心网友
05.14
Windows 11 更新后开始菜单任务栏消失的修复方法
系统平台
Windows 11 更新后开始菜单任务栏消失的修复方法

Windows11更新后开始菜单和任务栏消失,通常由资源管理器进程、注册表或缓存文件异常导致。修复方法包括重启资源管理器进程、关闭自动隐藏任务栏、手动调用explorer exe、重置注册表StartMenu值、清理图标缓存文件,以及校正系统日期时间并同步NTP服务器。

热心网友
05.14
Win11系统安装日期查询方法详解
系统平台
Win11系统安装日期查询方法详解

Windows11系统可通过多种方式查看安装时间。系统设置提供直观的日期信息;systeminfo命令可精确到秒;配合find命令可快速过滤结果;PowerShell能查询并转换WMI格式;注册表则记录最底层的Unix时间戳。用户可根据需求选择合适方法。

热心网友
05.14
Windows 11 DNS污染导致网页打不开的解决方法与优化教程
系统平台
Windows 11 DNS污染导致网页打不开的解决方法与优化教程

Windows11因DNS污染导致网页无法访问时,可依次尝试以下方法解决:首先通过系统设置或网络适配器手动更换为可靠DNS服务器(如1 1 1 1和223 5 5 5);接着以管理员身份清空本地DNS缓存并验证解析结果;若问题持续,可重置Winsock与TCP IP协议栈;最后可考虑禁用QoS等系统功能以排除干扰。

热心网友
05.14

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

红米7英寸大屏手机曝光 新品研发中
科技数码
红米7英寸大屏手机曝光 新品研发中

据传REDMI正研发一款配备7英寸2K大屏与超10000mAh电池的手机。该产品旨在融合巨屏显示与超长续航,兼顾通信、支付等基础功能,并拓展至办公、阅读、影音等多场景应用,试图在便携与实用间寻求新平衡。此举或填补高端安卓大屏市场空白,重新定义巨屏手机体验。

热心网友
05.14
凝心聚力绘蓝图 群贤毕至启新程
科技数码
凝心聚力绘蓝图 群贤毕至启新程

河南省科学院召开“十五五”规划咨询会,18位两院院士线上线下共商发展蓝图。会议总结“十四五”在机制、人才、平台及成果等方面成效,明确未来五年将聚焦特色领域、深化科产融合、加强人才培养与重大设施建设,致力建成全国一流新型研发机构,支撑区域创新发展。

热心网友
05.14
科普博主唐立梅拥抱年轻观众探索短视频流量密码
科技数码
科普博主唐立梅拥抱年轻观众探索短视频流量密码

科学家唐立梅兼具深海与极地科考经历,近期转型短视频科普。她发现严谨表达未必受欢迎,情感共鸣内容反而更易引发关注,流量规律令其困惑。尽管难以把握算法,她仍坚持每条视频必须承载扎实的科普价值,并依靠年轻团队适应传播环境。

热心网友
05.14
妙鸭相机团队解散传闻公司回应仅维持基础运营
科技数码
妙鸭相机团队解散传闻公司回应仅维持基础运营

知情人士透露,虎鲸文娱旗下AI写真应用妙鸭相机核心团队已于去年9月底解散。该产品去年7月上线后曾迅速走红,用户支付9 9元即可生成数字分身制作写真。目前产品已停止更新与推广,仅维持基础运营。其从爆红到解散的短暂历程,为AI应用的商业可持续性提供了反思案例。

热心网友
05.14
特斯拉FSD在德国柏林工厂完成15万公里自动驾驶测试
科技数码
特斯拉FSD在德国柏林工厂完成15万公里自动驾驶测试

特斯拉在柏林工厂内部使用自动驾驶系统完成约15万公里短途转运,替代人工挪车。闭环测试环境提升了生产效率和空间利用率,展现了人工智能在工业流程中的实际应用。

热心网友
05.14