Python API¶
Copyright 2008 Google Inc.
这个目录包含 Python 协议缓冲区运行库。
通常情况下,这个目录是作为 protobuf 包的一部分,可以从:
https://developers.google.com/protocol-buffers/
完整的软件包包括 C++ 源代码,其中包括协议编译器(protoc)。如果你从 PyPI 或其他一些特定于 Python 的来源下载这个包,你可能只收到了代码的 Python 部分。在这种情况下,你需要从其他来源获得协议编译器,才能使用这个包。
开发预警¶
纯 Python 的性能很慢。为了获得更好的性能,请使用 Python c++ 实现。
安装¶
请确保你有 Python 3.5 或更新版本。 如果有疑问,请运行:
$ python -V
如果你没有安装 setuptools,请注意,只要你运行
setup.py
,它就会自动下载和安装。如果你想手动安装它,你可以按照 本页 上的说明来做。构建 C++ 代码,或安装
protoc
的二进制分发。如果你安装的是二进制发行版,请确保它与本软件包的版本相同。如果有疑问,请运行:$ protoc --version
建立并运行测试:
$ python setup.py build $ python setup.py test
要构建、测试和使用 C++ 实现,你必须首先编译
libprotobuf.so
:$ (cd .. && make)
在 X 系统
如果你正在运行 Homebrew 提供的 Python,你必须确保另一个版本的 protobuf 尚未安装,因为 Homebrew 的 Python 会在搜索
../src/.libs
之前搜索/usr/local/lib
的libprotobuf.so
。你可以解除 Homebrew 的 protobuf 的链接,或者安装你之前建立的
libprotobuf
:$ brew unlink protobuf
或者
$ (cd .. && make install)
在其他 *nix 平台:
你必须使
libprotobuf.so
动态可用。你可以安装你之前建立的 libprotobuf,或者设置LD_LIBRARY_PATH
:$ export LD_LIBRARY_PATH=../src/.libs
或者
$ (cd .. && make install)
要建立 C++ 实现,请运行:
$ python setup.py build --cpp_implementation
然后像这样运行测试:
$ python setup.py test --cpp_implementation
如果某些测试失败,这个库可能无法在你的系统上正确工作。 继续下去,风险自负。
请注意,Cygwin 上某些版本的 Python 有一个已知的问题,导致测试在打印错误:
sem_init: Resource temporarily unavailable
。这似乎是一个 Cygwin 或 Python 的错误。我们不知道它是否或何时可能被修复。我们也不知道这个错误在实践中影响用户的可能性有多大”
安装
$ python setup.py install
或者
$ (cd .. && make install) $ python setup.py install --cpp_implementation
这个步骤可能需要超级用户的权限。注意:要使用 C++ 实现,你需要在运行你的程序之前导出一个环境变量。更多细节见下面的 “C++ 实现” 部分。
C++ 实现¶
Python 消息的 C++ 实现是作为 Python 扩展而建立的,以提高 protobuf Python 的整体性能。
要使用 C++ 实现,你需要安装 C++ protobuf 运行时库,请看父目录中的说明。