blob: 4c194297002932a1c6d5a80aa9706b376ae58d1a [file] [log] [blame] [view]
temporal40ee5512008-07-10 02:12:20 +00001Protocol Buffers - Google's data interchange format
jessecd04e9b2015-03-16 15:15:59 -07002===================================================
3
4[![Build Status](https://travis-ci.org/google/protobuf.svg?branch=master)](https://travis-ci.org/google/protobuf)
5
temporal40ee5512008-07-10 02:12:20 +00006Copyright 2008 Google Inc.
7
8This directory contains the Python Protocol Buffers runtime library.
9
temporalcc930432008-07-21 20:28:30 +000010Normally, this directory comes as part of the protobuf package, available
11from:
12
Feng Xiaoe4288622014-10-01 16:26:23 -070013 https://developers.google.com/protocol-buffers/
temporalcc930432008-07-21 20:28:30 +000014
15The complete package includes the C++ source code, which includes the
16Protocol Compiler (protoc). If you downloaded this package from PyPI
17or some other Python-specific source, you may have received only the
18Python part of the code. In this case, you will need to obtain the
19Protocol Compiler from some other source before you can use this
20package.
21
temporal742e4092008-08-27 19:25:48 +000022Development Warning
23===================
24
25The Python implementation of Protocol Buffers is not as mature as the C++
26and Java implementations. It may be more buggy, and it is known to be
27pretty slow at this time. If you would like to help fix these issues,
28join the Protocol Buffers discussion list and let us know!
29
temporal40ee5512008-07-10 02:12:20 +000030Installation
31============
32
Matt Iversen4186d4c2014-12-17 20:11:08 +1100331) Make sure you have Python 2.6 or newer. If in doubt, run:
temporal40ee5512008-07-10 02:12:20 +000034
Misha Brukman67755702017-05-23 10:33:03 -040035 $ python -V
temporal40ee5512008-07-10 02:12:20 +000036
372) If you do not have setuptools installed, note that it will be
Misha Brukman67755702017-05-23 10:33:03 -040038 downloaded and installed automatically as soon as you run `setup.py`.
temporal40ee5512008-07-10 02:12:20 +000039 If you would rather install it manually, you may do so by following
Misha Brukman67755702017-05-23 10:33:03 -040040 the instructions on [this page](https://packaging.python.org/en/latest/installing.html#setup-for-installing-packages).
temporal40ee5512008-07-10 02:12:20 +000041
Misha Brukman67755702017-05-23 10:33:03 -0400423) Build the C++ code, or install a binary distribution of `protoc`. If
temporal40ee5512008-07-10 02:12:20 +000043 you install a binary distribution, make sure that it is the same
44 version as this package. If in doubt, run:
45
Misha Brukman67755702017-05-23 10:33:03 -040046 $ protoc --version
temporal40ee5512008-07-10 02:12:20 +000047
xiaofeng@google.coma36f1b42013-02-26 17:49:03 +0000484) Build and run the tests:
temporal40ee5512008-07-10 02:12:20 +000049
Misha Brukman67755702017-05-23 10:33:03 -040050 $ python setup.py build
51 $ python setup.py test
jieluo@google.com1eba9d92014-08-25 20:17:53 +000052
Misha Brukman67755702017-05-23 10:33:03 -040053 To build, test, and use the C++ implementation, you must first compile
54 `libprotobuf.so`:
Tamir Dubersteind632bc72015-04-10 15:26:58 -040055
Misha Brukman67755702017-05-23 10:33:03 -040056 $ (cd .. && make)
Tamir Dubersteind632bc72015-04-10 15:26:58 -040057
Misha Brukman67755702017-05-23 10:33:03 -040058 On OS X:
Tamir Dubersteind632bc72015-04-10 15:26:58 -040059
Misha Brukman67755702017-05-23 10:33:03 -040060 If you are running a Homebrew-provided Python, you must make sure another
61 version of protobuf is not already installed, as Homebrew's Python will
62 search `/usr/local/lib` for `libprotobuf.so` before it searches
63 `../src/.libs`.
Tamir Dubersteind632bc72015-04-10 15:26:58 -040064
Misha Brukman67755702017-05-23 10:33:03 -040065 You can either unlink Homebrew's protobuf or install the `libprotobuf` you
66 built earlier:
Tamir Dubersteind632bc72015-04-10 15:26:58 -040067
Misha Brukman67755702017-05-23 10:33:03 -040068 $ brew unlink protobuf
Tamir Dubersteind632bc72015-04-10 15:26:58 -040069
Misha Brukman67755702017-05-23 10:33:03 -040070 or
Tamir Dubersteind632bc72015-04-10 15:26:58 -040071
Misha Brukman67755702017-05-23 10:33:03 -040072 $ (cd .. && make install)
Tamir Dubersteind632bc72015-04-10 15:26:58 -040073
Misha Brukman67755702017-05-23 10:33:03 -040074 On other *nix:
Josh Haberman2bd813b2015-04-09 16:41:58 -070075
Misha Brukman67755702017-05-23 10:33:03 -040076 You must make `libprotobuf.so` dynamically available. You can either
77 install libprotobuf you built earlier, or set `LD_LIBRARY_PATH`:
78
79 $ export LD_LIBRARY_PATH=../src/.libs
80
81 or
82
83 $ (cd .. && make install)
84
85 To build the C++ implementation run:
86
87 $ python setup.py build --cpp_implementation
88
89 Then run the tests like so:
90
91 $ python setup.py test --cpp_implementation
temporal40ee5512008-07-10 02:12:20 +000092
93 If some tests fail, this library may not work correctly on your
94 system. Continue at your own risk.
95
96 Please note that there is a known problem with some versions of
97 Python on Cygwin which causes the tests to fail after printing the
Misha Brukman67755702017-05-23 10:33:03 -040098 error: `sem_init: Resource temporarily unavailable`. This appears
99 to be a [bug either in Cygwin or in
100 Python](http://www.cygwin.com/ml/cygwin/2005-07/msg01378.html).
101
Ian Hunter130bb072016-11-16 17:34:28 +0000102 We do not know if or when it might be fixed. We also do not know
temporal40ee5512008-07-10 02:12:20 +0000103 how likely it is that this bug will affect users in practice.
104
1055) Install:
106
Misha Brukman67755702017-05-23 10:33:03 -0400107 $ python setup.py install
jessecd04e9b2015-03-16 15:15:59 -0700108
Misha Brukman67755702017-05-23 10:33:03 -0400109 or:
jessecd04e9b2015-03-16 15:15:59 -0700110
Misha Brukman67755702017-05-23 10:33:03 -0400111 $ (cd .. && make install)
112 $ python setup.py install --cpp_implementation
temporal40ee5512008-07-10 02:12:20 +0000113
114 This step may require superuser privileges.
Josh Haberman2bd813b2015-04-09 16:41:58 -0700115 NOTE: To use C++ implementation, you need to export an environment
116 variable before running your program. See the "C++ Implementation"
117 section below for more details.
temporal40ee5512008-07-10 02:12:20 +0000118
119Usage
120=====
121
122The complete documentation for Protocol Buffers is available via the
123web at:
124
Feng Xiaoe4288622014-10-01 16:26:23 -0700125 https://developers.google.com/protocol-buffers/
liujisi@google.com9b7f6c52010-12-08 03:45:27 +0000126
127C++ Implementation
128==================
129
liujisi@google.com9b7f6c52010-12-08 03:45:27 +0000130The C++ implementation for Python messages is built as a Python extension to
131improve the overall protobuf Python performance.
132
Manjunath Kudlurcf828de2016-03-25 10:58:46 -0700133To use the C++ implementation, you need to install the C++ protobuf runtime
134library, please see instructions in the parent directory.