Python API

Copyright 2008 Google Inc.

这个目录包含 Python 协议缓冲区运行库。

通常情况下,这个目录是作为 protobuf 包的一部分,可以从:

https://developers.google.com/protocol-buffers/

完整的软件包包括 C++ 源代码,其中包括协议编译器(protoc)。如果你从 PyPI 或其他一些特定于 Python 的来源下载这个包,你可能只收到了代码的 Python 部分。在这种情况下,你需要从其他来源获得协议编译器,才能使用这个包。

开发预警

纯 Python 的性能很慢。为了获得更好的性能,请使用 Python c++ 实现。

安装

  1. 请确保你有 Python 3.5 或更新版本。 如果有疑问,请运行:

    $ python -V
    
  2. 如果你没有安装 setuptools,请注意,只要你运行 setup.py,它就会自动下载和安装。如果你想手动安装它,你可以按照 本页 上的说明来做。

  3. 构建 C++ 代码,或安装 protoc 的二进制分发。如果你安装的是二进制发行版,请确保它与本软件包的版本相同。如果有疑问,请运行:

    $ protoc --version
    
  4. 建立并运行测试:

    $ python setup.py build
    $ python setup.py test
    

    要构建、测试和使用 C++ 实现,你必须首先编译 libprotobuf.so

    $ (cd .. && make)
    

    在 X 系统

    如果你正在运行 Homebrew 提供的 Python,你必须确保另一个版本的 protobuf 尚未安装,因为 Homebrew 的 Python 会在搜索 ../src/.libs 之前搜索 /usr/local/liblibprotobuf.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 的错误

    我们不知道它是否或何时可能被修复。我们也不知道这个错误在实践中影响用户的可能性有多大”

  5. 安装

    $ python setup.py install
    

    或者

    $ (cd .. && make install)
    $ python setup.py install --cpp_implementation
    

    这个步骤可能需要超级用户的权限。注意:要使用 C++ 实现,你需要在运行你的程序之前导出一个环境变量。更多细节见下面的 “C++ 实现” 部分。

用法

协议缓冲区的完整文档可通过网络获得:

https://developers.google.com/protocol-buffers/

C++ 实现

Python 消息的 C++ 实现是作为 Python 扩展而建立的,以提高 protobuf Python 的整体性能。

要使用 C++ 实现,你需要安装 C++ protobuf 运行时库,请看父目录中的说明。