| 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) 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/installing.html#setup-for-installing-packages). | |
| 3) 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 | |
| 4) 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`: | |
| $ (cd .. && make) | |
| 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 | |
| `../src/.libs`. | |
| You can either unlink Homebrew's protobuf or install the `libprotobuf` you | |
| built earlier: | |
| $ brew unlink protobuf | |
| or | |
| $ (cd .. && 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`: | |
| $ export LD_LIBRARY_PATH=../src/.libs | |
| or | |
| $ (cd .. && make install) | |
| 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. | |
| 5) 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. |