在用python引用protobuf编译好的.py文件时遇到报错:
File "/home/yany/.local/lib/python2.7/site-packages/google/protobuf/message.py", line 199, in ParseFromString
return self.MergeFromString(serialized)
File "/home/yany/.local/lib/python2.7/site-packages/google/protobuf/internal/python_message.py", line 1134, in MergeFromString
raise message_mod.DecodeError('Truncated message.')
google.protobuf.message.DecodeError: Truncated message.
网上没查到很合适的解决方案,debug过程中发现把.proto文件中的空行去掉会有一定改善,但不治本;
最后发现是proto版本问题,
proto的python版本和C版本要匹配,我这边的版本信息:
proto的python版本:3.17.3
安装指令:
默认:pip install protobuf
指定版本:pip install protobuf==3.17.3
版本查询方法:
python
>>>import google.protobuf
>>>google.protobuf.__version__
安装c++版本protobuf, c++版本应该是protoc 3.0.0,
版本查询命令 protoc --version