跳至正文
ComfyUI WorldBETA
登录
资料整理

Protobuf 报 Descriptors cannot be created directly:先找生成代码的归属

该错误可能由旧版生成的 Python 消息代码与运行库不匹配引起。不要只看到 protobuf 就删除或降级整个环境中的所有相关依赖。

更新于 2026-09-25发布修订: 7资料基线: 7

现象与适用范围

该错误可能由旧版生成的 Python 消息代码与运行库不匹配引起。不要只看到 protobuf 就删除或降级整个环境中的所有相关依赖。

检索片段;具体版本与异常上下文可能不同:

Descriptors cannot be created directly

已核对的依据

2022 年 Python 更新说明 指出,采用 upb 的 4.21 运行库要求 Python 代码由 protoc 3.19.0 或更新版本生成。这解释了不少旧 _pb2.py 描述符错误,但不能解释今天所有 Protobuf 故障。当前跨版本保证 区分生成代码与运行库:新的生成代码不能搭配更旧的运行库;自 3.20.0 以来的 Python 生成代码有较长兼容窗口,但仍受文档列明的边界及后续警告约束。应核对具体代码生产者与运行库,而不是把 2022 年的临时办法套到整个环境。

需要区分的情况

1. 依赖携带的旧 _pb2.py 在 upb 切换前生成,与所选 Python 运行库不兼容。

2. 包装节点内置或复制了其他项目/版本的生成代码,或新的生成代码搭配了更旧的运行库。

3. 原因其实是字段、数据或接口问题,仅因堆栈出现 Protobuf 就被误归为这一条描述符构建错误。

建议的排查顺序

以下为本站编排的操作建议,不表示已定位你的具体环境。

1. 保留完整 traceback,找到第一个相关 _pb2.py 文件;记录其所属分发包或节点版本、文件头部的生成代码版本(若有)、受影响的 Python 可执行文件及 google.protobuf.__version__。最后一行不足以确认生产者。

2. 对照该项目支持的运行库范围与官方跨版本规则。优先使用项目维护的兼容版本,不手工改 _pb2.py,也不因一段 traceback 就替换整套 ComfyUI 运行环境。

3. 对自己维护的协议定义,用受支持的 protoc/插件与运行库组合重新生成,并在可恢复副本中测试。第三方生成文件优先由原项目更新;确需旧组合时隔离运行,并检查所有受影响消费者。

4. 导入归属项目的生成模块,完成最小真实消息往返及原节点调用,再回归其他 Protobuf 消费者。若临时切换实现或限制版本,记录其确切适用范围和回退方案。

怎样判断这一层已解决

生成代码能够在所选运行库下加载,实际消息处理及节点调用成功,相关消费者未出现新冲突。

注意事项和适用边界

历史错误文案可能把 protobuf 3.20.x 或纯 Python 实现列为临时绕行方法;两者均非通用修复。后者可能更慢,共享环境的降级也可能违反其他依赖的版本要求。本轮未读取用户协议文件或执行模型。

资料复核并独立审阅中文:2026-09-26。本站未安装包、运行生成代码、执行 GPU 推理或修复用户环境。

原始来源

相关排查

还没解决?

排查下一个可能的原因

同样的现象可能来自不同原因。可以按顺序查看下面这些相关条目。

  1. ModuleNotFoundError:包已安装,ComfyUI 仍说找不到模块ModuleNotFoundError适用于启动或执行自定义节点时提示缺少 Python 模块。命令行显示“已安装”仍可能是另一个 Python 的结果;Windows Portable 尤其需要区分系统 Python 与内置解释器。
把完整日志粘贴到报错排查工具

这篇内容对你有帮助吗?

匿名统计,只记录“有/没有帮助”的计数,不记录账号、IP 地址或设备信息。

资料来源

2026-09-26 复核 Protobuf 2022 年 Python upb 切换及当前跨版本保证,并独立审阅中文;未安装包或执行生成代码。

01Protobuf Python update of 2022-05-06资料核对: 2026-09-2602Cross-version runtime guarantee资料核对: 2026-09-26

报告问题 · 71c03172-b04f-5784-8cae-07f4981ec445

继续探索

编辑为本页关联的条目。