将Protobuf编译为Python时出现异常结果的求助
编译Steam Protobuf文件到Python时丢失RPC和对象定义问题
背景
- 我是Protocol Buffers新手,Python并非常用开发语言,之前接触的Protobuf都是由IDE在部署时自动处理,无需手动编译。
- 目前正在更新Steam API集成(原集成已过时),需要新增RPC调用,对应的proto文件需要手动编译为Python代码,但编译结果异常。
问题现象
- 编译新proto文件后,仅生成了一个巨大的
DESCRIPTORblob,所有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系统,尝试了两种编译方式:
- 直接通过CMD调用protoc工具:
protoc -I. --python_out=.\out .\steammessages_base.proto - 通过Python的grpcio-tools模块调用:
此方式生成的gRPC文件仅包含空的类声明,无实际内容。python -m grpc_tools.protoc -I. --python_out=.\out --grpc_python_out=.\grpc_out .\steammessages_base.proto
- 直接通过CMD调用protoc工具:
- 尝试过在WSL Ubuntu环境中编译(使用正斜杠路径),执行命令前已提前创建
out和grpc_out目录。 - 查阅过Stack Overflow相关问答,未找到匹配的解决方案。
内容的提问来源于stack exchange,提问作者John Doe
相关产品推荐
相关产品推荐

