Merge commit '36bca61764984ff5395653cf8377ec5daa71b709' as 'libs/protobuf'
This commit is contained in:
130
libs/protobuf/python/README.md
Normal file
130
libs/protobuf/python/README.md
Normal file
@@ -0,0 +1,130 @@
|
||||
Protocol Buffers - Google's data interchange format
|
||||
===================================================
|
||||
|
||||
Copyright 2008 Google Inc.
|
||||
|
||||
This directory contains the Python Protocol Buffers runtime library.
|
||||
|
||||
Normally, this directory comes as part of the protobuf package, available
|
||||
from:
|
||||
|
||||
https://developers.google.com/protocol-buffers/
|
||||
|
||||
The complete package includes the C++ source code, which includes the
|
||||
Protocol Compiler (protoc). If you downloaded this package from PyPI
|
||||
or some other Python-specific source, you may have received only the
|
||||
Python part of the code. In this case, you will need to obtain the
|
||||
Protocol Compiler from some other source before you can use this
|
||||
package.
|
||||
|
||||
Development Warning
|
||||
===================
|
||||
|
||||
The pure python performance is slow. For better performance please
|
||||
use python c++ implementation.
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
1) Make sure you have Python 3.7 or newer. If in doubt, run:
|
||||
|
||||
$ python -V
|
||||
|
||||
2) Make sure you have Bazel 0.5.4 or later (or CMake 3.5 or later).
|
||||
|
||||
3) If you do not have setuptools installed, note that it will be
|
||||
downloaded and installed automatically as soon as you run `setup.py`.
|
||||
If you would rather install it manually, you may do so by following
|
||||
the instructions on [this page](https://packaging.python.org/en/latest/tutorials/installing-packages/).
|
||||
|
||||
4) Build the C++ code, or install a binary distribution of `protoc`. If
|
||||
you install a binary distribution, make sure that it is the same
|
||||
version as this package. If in doubt, run:
|
||||
|
||||
$ protoc --version
|
||||
|
||||
5) Build and run the tests:
|
||||
|
||||
$ python setup.py build
|
||||
$ python setup.py test
|
||||
|
||||
To build, test, and use the C++ implementation, you must first compile
|
||||
`libprotobuf.so` using either [Bazel](../README.md) or [CMake](../src/README.md):
|
||||
|
||||
On OS X:
|
||||
|
||||
If you are running a Homebrew-provided Python, you must make sure another
|
||||
version of protobuf is not already installed, as Homebrew's Python will
|
||||
search `/usr/local/lib` for `libprotobuf.so` before it searches the compiled
|
||||
binaries.
|
||||
|
||||
You can either unlink Homebrew's protobuf or install the `libprotobuf` you
|
||||
built earlier:
|
||||
|
||||
$ brew unlink protobuf
|
||||
|
||||
or
|
||||
|
||||
$ (cd .. && cmake . && make install)
|
||||
|
||||
On other *nix:
|
||||
|
||||
You must make `libprotobuf.so` dynamically available. You can either
|
||||
install libprotobuf you built earlier, or set `LD_LIBRARY_PATH`:
|
||||
|
||||
$ (cd .. && cmake . && make -j20 install)
|
||||
|
||||
or
|
||||
|
||||
$ export LD_LIBRARY_PATH=../bazel-bin
|
||||
|
||||
To build the C++ implementation run:
|
||||
|
||||
$ python setup.py build --cpp_implementation
|
||||
|
||||
Then run the tests like so:
|
||||
|
||||
$ python setup.py test --cpp_implementation
|
||||
|
||||
If some tests fail, this library may not work correctly on your
|
||||
system. Continue at your own risk.
|
||||
|
||||
Please note that there is a known problem with some versions of
|
||||
Python on Cygwin which causes the tests to fail after printing the
|
||||
error: `sem_init: Resource temporarily unavailable`. This appears
|
||||
to be a [bug either in Cygwin or in
|
||||
Python](http://www.cygwin.com/ml/cygwin/2005-07/msg01378.html).
|
||||
|
||||
We do not know if or when it might be fixed. We also do not know
|
||||
how likely it is that this bug will affect users in practice.
|
||||
|
||||
6) Install:
|
||||
|
||||
$ python setup.py install
|
||||
|
||||
or:
|
||||
|
||||
$ (cd .. && make install)
|
||||
$ python setup.py install --cpp_implementation
|
||||
|
||||
This step may require superuser privileges.
|
||||
NOTE: To use C++ implementation, you need to export an environment
|
||||
variable before running your program. See the "C++ Implementation"
|
||||
section below for more details.
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
The complete documentation for Protocol Buffers is available via the
|
||||
web at:
|
||||
|
||||
https://developers.google.com/protocol-buffers/
|
||||
|
||||
C++ Implementation
|
||||
==================
|
||||
|
||||
The C++ implementation for Python messages is built as a Python extension to
|
||||
improve the overall protobuf Python performance.
|
||||
|
||||
To use the C++ implementation, you need to install the C++ protobuf runtime
|
||||
library, please see instructions in the parent directory.
|
||||
Reference in New Issue
Block a user