Closed
Description
Hello,
I'm trying to use C++ protobuf implementation for Python since pure Python proto is too slow.
But importing gcloud.bigtable
package throws an exception TypeError: Descriptors should not be created directly, but only retrieved from their parent.
.
Is there any way to fix this problem?
Thanks,
-
OS type and version
Tested on ubuntu 14.04 / osx 10.12. -
Python version and virtual environment information
python --version
Python 2.7.6 -
google-cloud-python version
pip show google-cloud
,pip show google-<service>
orpip freeze
google-cloud 0.22.0 / 0.18.3 -
Stacktrace if available
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/jungho.ahn/pyproto/protobuf/xx/local/lib/python2.7/site-packages/google/cloud/bigtable/__init__.py", line 18, in <module>
from google.cloud.bigtable.client import Client
File "/home/jungho.ahn/pyproto/protobuf/xx/local/lib/python2.7/site-packages/google/cloud/bigtable/client.py", line 33, in <module>
from google.longrunning import operations_grpc
File "/home/jungho.ahn/pyproto/protobuf/xx/local/lib/python2.7/site-packages/google/longrunning/operations_grpc.py", line 47, in <module>
options=None),
File "/home/jungho.ahn/pyproto/protobuf/python/google/protobuf/descriptor.py", line 494, in __new__
_message.Message._CheckCalledFromGeneratedFile()
TypeError: Descriptors should not be created directly, but only retrieved from their parent.
- Steps to reproduce
// Install CPP proto implementation.
$ git clone https://github.com/google/protobuf.git
$ cd protobuf
$ ./autogen.sh
$ CXXFLAGS="-fPIC -g -O2" ./configure
$ make -j12
$ export PROTOC=$PWD/src/protoc
$ cd python
$ python setup.py bdist_wheel --cpp_implementation --compile_static_extension
$ pip uninstall protobuf
$ pip install dist/<wheel file name> (e.g., protobuf-3.2.0-cp27-cp27mu-linux_x86_64.whl)
// Enable CPP proto implementation.
$ export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=cpp
$ python -c 'from gcloud import bigtable'
- Code example
from gcloud import bigtable
Activity