Tec*_*uab 2 python protocol-buffers python-3.x
我看到应该支持为 C++ 生成的 protobuf 阅读器创建 python 包装器。
从http://yz.mit.edu/wp/fast-native-c-protocol-buffers-from-python/ 我找到了一种通过设置环境变量来打开支持的简单方法:
PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=cpp
如果我这样做,我会收到以下错误:
import pyFileLib.db_proc_geo_pb2
File "C:\sandbox\PrortoBuf\lib\pyFileLib\db_proc_geo_pb2.py", line 6, in <module>
from google.protobuf import descriptor as _descriptor
File "c:\python\winpython-64bit-3.6.3.0qt5\python-3.6.3.amd64\lib\site-packages\google\protobuf\descriptor.py", line 46, in <module>
from google.protobuf.pyext import _message
ImportError: cannot import name '_message'
Run Code Online (Sandbox Code Playgroud)
我看到了一种扩展 protoc 生成器以本地生成 fastpython 输出的方法:https : //github.com/Cue/fast-python-pb
git clone https://github.com/Cue/fast-python-pb.git
cd fast-python-pb
python setup.py install
Run Code Online (Sandbox Code Playgroud)
尝试使用 --fastpython_out 运行 protoc 时出现以下错误:
ModuleNotFoundError: No module named 'plugin_pb2'
--fastpython_out: protoc-gen-fastpython: Plugin failed with status code 1.
Run Code Online (Sandbox Code Playgroud)
看起来这与以下内容有关:https : //groups.google.com/forum/#!topic/protobuf/5Ywz8gwn9Kk
python 安装协议缓冲区不会生成 google.protobuf.compiler.plugin_pb2 python 文件,而 google.protobuf.descriptor_pb2 是由 protobuf/python/setup.py 显式生成的
我该如何进行这种显式安装……或者以其他方式使 python 中的 protobuf 性能可以接受?
我在https://developers.google.com/protocol-buffers/docs/reference/python-generated的末尾发现了这个小宝石
还有一个通过 Python 扩展的 Python 消息的 C++ 实现,以获得更好的性能。实现类型由环境变量 PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION(有效值:“cpp”和“python”)控制。默认值当前为“python”,但在未来版本中将更改为“cpp”。
注意在安装protobuf库之前需要设置环境变量,以便构建和安装python扩展。C++ 实现还需要 CPython 平台。有关详细的安装说明,请参阅 python/INSTALL.txt。
WinPython 3.6.3 发行版已经安装了 protobuf,但显然在安装过程中没有设置这个标志
使用以下命令来解决这个问题:
set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=cpp
python -mpip install protobuf --upgrade
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4166 次 |
| 最近记录: |