Python 3中的协议缓冲区
我正在尝试在Python 3项目中使用Google Protocol Buffers。 然而,生成的python文件不想与google.protobuf库合作。 尝试使用protobuf对象会导致NotImplementedError。
我的设置:
使用这些库时出现问题:
例:
from pb_test import test_pb2
pb_object = test_pb2.TestMsg()
pb_object.Clear() # results in NotImplementedError
使用两个不同的库时发生同样的问题的事实是有一个无效的test_pb2.py文件的强烈暗示。 '未实现'方法位于Message类中,该类应该被元类覆盖。 看来这个元类完全没有应用。
test.proto文件:
message TestMsg {
required int32 id = 1;
}
该文件使用以下命令进行编译:
eipifi@debvm:~/pb_test$ protoc --python_out=. test.proto
任何提示将不胜感激。
解决了。 为了使* _pb2.py文件与Python 3中的protobuf库一起运行良好,需要按以下方式更改这些文件:
原版的:
class TestMsg(_message.Message):
__metaclass__ = _reflection.GeneratedProtocolMessageType
DESCRIPTOR = _TESTMSG
固定:
class TestMsg(_message.Message, metaclass=_reflection.GeneratedProtocolMessageType):
DESCRIPTOR = _TESTMSG
链接地址: http://www.djcxy.com/p/48337.html
上一篇: Protocol Buffers in Python 3
下一篇: creating a python dictionary like object from protocol buffers for use in pandas