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

将Protobuf编译为Python时出现异常结果的求助

编译Steam Protobuf文件到Python时丢失RPC和对象定义问题

背景

  • 我是Protocol Buffers新手,Python并非常用开发语言,之前接触的Protobuf都是由IDE在部署时自动处理,无需手动编译。
  • 目前正在更新Steam API集成(原集成已过时),需要新增RPC调用,对应的proto文件需要手动编译为Python代码,但编译结果异常。

问题现象

  • 编译新proto文件后,仅生成了一个巨大的DESCRIPTOR blob,所有RPC调用和对象定义都未生成。
  • 为验证问题,尝试编译项目中已有的steammessages_base.proto文件,发现新生成的文件比原有正常文件缺失大量关键内容:
    原有正常文件中的代码片段:
    _CMSGAUTHTICKET = _descriptor.Descriptor(
      name='CMsgAuthTicket',
      full_name='CMsgAuthTicket',
      filename=None,
      file=DESCRIPTOR,
      containing_type=None,
      create_key=_descriptor._internal_create_key,
      fields=[
        #... 字段定义代码
      ]
    )
    
    新编译生成的对应片段:
    _CMSGAUTHTICKET._serialized_start=1189
    _CMSGAUTHTICKET._serialized_end=1355
    

已尝试的解决操作

  • 使用SteamDatabase提供的最新版本proto文件,按照Protobuf官方Python教程执行编译步骤。
  • 基于Windows系统,尝试了两种编译方式:
    1. 直接通过CMD调用protoc工具:
      protoc -I. --python_out=.\out .\steammessages_base.proto
      
    2. 通过Python的grpcio-tools模块调用:
      python -m grpc_tools.protoc -I. --python_out=.\out --grpc_python_out=.\grpc_out .\steammessages_base.proto
      
      此方式生成的gRPC文件仅包含空的类声明,无实际内容。
  • 尝试过在WSL Ubuntu环境中编译(使用正斜杠路径),执行命令前已提前创建out和grpc_out目录。
  • 查阅过Stack Overflow相关问答,未找到匹配的解决方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:22:53