You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新版protoc生成的_pb2.py文件不完整致BigQuery上传失败求助

问题解答

1. 生成的_pb2.py文件是否不完整?

不是。新版本protoc生成的文件并非不完整,而是Protobuf的代码生成逻辑在新版本中做了优化,旧版本里的_DUPLICATE赋值和duplicate类属于内部冗余实现代码,新版本已经不再生成这类内容,这是正常的版本迭代变化。

2. 问题原因及解决方法

原因

BigQuery的旧版数据上传逻辑可能依赖了旧版本protoc生成的代码结构(比如_DUPLICATE标识、duplicate类),而Protobuf 3.20+版本开始优化了代码生成规则,移除了这些内部实现相关的冗余代码,导致BigQuery客户端无法适配新生成的_pb2.py文件结构,最终上传失败。

解决方法

  • 降级protoc版本:安装3.19.x及以下的protoc版本(即之前能正常生成包含_DUPLICATE代码的版本),重新运行生成命令。确保执行protoc时使用的是降级后的程序路径。
  • 升级BigQuery客户端库:将google-cloud-bigquery库升级到最新版本,新版客户端已适配Protobuf 3.20+的代码生成格式。执行命令:pip install --upgrade google-cloud-bigquery
  • 临时手动补充代码:如果暂时无法调整版本,可以手动在生成的_pb2.py文件末尾添加以下代码(仅作临时 workaround,不推荐长期使用):
    _DUPLICATE = None
    class duplicate(_message.Message):
        __slots__ = []
        _DESCRIPTOR = _DUPLICATE
    

内容的提问来源于stack exchange,提问作者ChrisChros

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 14:45:39