Description
I've installed google-api-python-client
from source, but when at some point my application was failing with this message:
...
...
File "build/bdist.linux-x86_64/egg/oauth2client/util.py", line 142, in positional_wrapper
return wrapped(*args, **kwargs)
File "build/bdist.linux-x86_64/egg/googleapiclient/discovery.py", line 193, in build
content = _retrieve_discovery_doc(requested_url, http, cache_discovery, cache)
File "build/bdist.linux-x86_64/egg/googleapiclient/discovery.py", line 215, in _retrieve_discovery_doc
from . import discovery_cache
ImportError: cannot import name discovery_cache
I've checked if discovery_cache
module was actually part of the egg
, and unfortunately it was not:
[root@e42fb97ce657 unit]# python
Python 2.7.5 (default, Jun 24 2015, 00:41:19)
[GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import googleapiclient.discovery_cache
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named discovery_cache
>>>
Here are all the files in egg
[root@e42fb97ce657 ~]# unzip -l /usr/lib/python2.7/site-packages/google_api_python_client-1.4.1-py2.7.egg
Archive: /usr/lib/python2.7/site-packages/google_api_python_client-1.4.1-py2.7.egg
Length Date Time Name
--------- ---------- ----- ----
1169 09-03-2015 16:09 apiclient/__init__.py
1301 09-03-2015 16:09 apiclient/__init__.pyc
1 09-03-2015 16:09 EGG-INFO/dependency_links.txt
62 09-03-2015 16:09 EGG-INFO/requires.txt
26 09-03-2015 16:09 EGG-INFO/top_level.txt
969 09-03-2015 16:09 EGG-INFO/PKG-INFO
1 09-03-2015 16:09 EGG-INFO/zip-safe
545 09-03-2015 16:09 EGG-INFO/SOURCES.txt
53575 09-03-2015 16:09 googleapiclient/http.py
9910 09-03-2015 16:09 googleapiclient/channel.py
40890 09-03-2015 16:09 googleapiclient/discovery.py
9907 09-03-2015 16:09 googleapiclient/schema.pyc
620 09-03-2015 16:09 googleapiclient/__init__.py
9317 09-03-2015 16:09 googleapiclient/schema.py
11830 09-03-2015 16:09 googleapiclient/model.py
4047 09-03-2015 16:09 googleapiclient/sample_tools.py
6552 09-03-2015 16:09 googleapiclient/mimeparse.py
53976 09-03-2015 16:09 googleapiclient/http.pyc
7043 09-03-2015 16:09 googleapiclient/mimeparse.pyc
6333 09-03-2015 16:09 googleapiclient/errors.pyc
3131 09-03-2015 16:09 googleapiclient/sample_tools.pyc
3622 09-03-2015 16:09 googleapiclient/errors.py
35534 09-03-2015 16:09 googleapiclient/discovery.pyc
14028 09-03-2015 16:09 googleapiclient/model.pyc
175 09-03-2015 16:09 googleapiclient/__init__.pyc
10690 09-03-2015 16:09 googleapiclient/channel.pyc
--------- -------
285254 26 files
[root@e42fb97ce657 ~]#
As a workaround I had to add googleapiclient/discovery_cache
to the packages
in setup.py
so it looked like that:
[root@e42fb97ce657 google-api-python-client]# more setup.py | grep packages -A 4 -m1
packages = [
'apiclient',
'googleapiclient',
'googleapiclient/discovery_cache'
]
Then installed and everything magically started working.
[root@e42fb97ce657 google-api-python-client]# python
Python 2.7.5 (default, Jun 24 2015, 00:41:19)
[GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import googleapiclient.discovery_cache
>>>
Here is a quick sample that looks similar to my environment using Docker
:
FROM centos:centos7
RUN yum install -y git python-devel python-setuptools unzip
RUN easy_install pip
RUN cd /tmp ;\
git clone https://github.com/google/google-api-python-client && \
cd google-api-python-client && \
python setup.py install
I've also tried to follow preferred suggestion from the README.md
and install it from pip
but it ended up in the same situation.
Please advice on how to proceed without making "manual" modifications to the official package?