python - 我们如何在Python代码中使用Python生成的protobuf代码?

标签 python protocol-buffers

我已经在Python 3.4中安装了protobuf,并将编译后的代码pb_x_pb2.py推送到python34文件夹中。当我输入 import pb_x_pb2.py 时,它显示以下错误。

>>> import pb_interface_pb2
Traceback (most recent call last):
  File "<pyshell#21>", line 1, in <module>
    import pb_interface_pb2
  File "C:\Python34\pb_interface_pb2.py", line 5, in <module>
    from google.protobuf import reflection
  File "C:\Python34\lib\site-packages\google\protobuf\reflection.py", line 68, in <module>
    from google.protobuf.internal import python_message
  File "C:\Python34\lib\site-packages\google\protobuf\internal\python_message.py", line 848
    except struct.error, e:
                       ^
SyntaxError: invalid syntax

最佳答案

Protobuf 并不真正支持 python 3.x。对于导入的库,请尝试 pip install protobuf-py3,这是该包的 python 3 端口。您还可以从生成的文件的 Pythonxx\Tools\Scripts 文件夹中运行 2to3.py 脚本。

另一种选择是下载最新版本的源代码,然后自己编译它们。我相信最新版本大部分都兼容2.x和3.x

关于python - 我们如何在Python代码中使用Python生成的protobuf代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29389754/

相关文章:

python - 在python中删除谷歌数据存储中的实体

python - Keras 中二元分类的输出层

python - 将 try/except 的 except 部分分离到函数中

c++ - protobuf,如何在我不太了解的 protobuf 消息中遍历所有设置字段?(C++)

python-3.x - 在Docker文件中设置mysql-connector-python

java - Protocol Buffer :如何在gradle的构建期间排除代码生成?

python - 不可哈希类型 : list

c++ - 无法编译协议(protocol)生成的 (C++) 类

Protocol Buffer 中的多态性 3

python - 如果在 Pandas 中的字符串末尾,则删除某些字符