Застрял в старой версии oauth2client при использовании Vagrant

У меня есть скрипт, который использует gcloud v0.7.1. Как только я запускаю его, я получаю следующую ошибку:

...
  File "/home/vagrant/venvs/lib/python2.7/site-packages/gcloud/credentials.py", line 26, in <module>
    from oauth2client.client import _get_application_default_credential_from_file
ImportError: cannot import name _get_application_default_credential_from_file

Насколько я могу судить, более старая версия (v1.2) oauth2client используется, хотя я сделал pip install oauth2client==1.5.0, Это происходит только на моем компьютере Vagrant (работает с CentOS 6.6, Python v 2.7.10, pip v7.1.2). Когда я нахожусь вне ящика Vagrant, я не получаю эту ошибку.

pip show oauth2client (из коробки Vagrant) дает:

Metadata-Version: 2.0
Name: oauth2client
Version: 1.5.0
Summary: OAuth 2.0 client library
Home-page: http://github.com/google/oauth2client/
Author: Google Inc.
Author-email: UNKNOWN
License: Apache 2.0
Location: /home/vagrant/venvs/lib/python2.7/site-packages
Requires: six, pyasn1-modules, rsa, pyasn1, httplib2

Однако я получаю другой номер версии, когда проверяю его из Python с помощью этой команды:
python -c "import oauth2client; print oauth2client.__version__; print oauth2client.__file__":

1.2
/home/vagrant/venvs/lib/python2.7/site-packages/oauth2client/__init__.pyc

import sys; print sys.path выходы:

['', '/home/vagrant/venvs/lib/python27.zip', '/home/vagrant/venvs/lib/python2.7', '/home/vagrant/venvs/lib/python2.7/plat-linux2', '/home/vagrant/venvs/lib/python2.7/lib-tk', '/home/vagrant/venvs/lib/python2.7/lib-old', '/home/vagrant/venvs/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7', '/usr/local/lib/python2.7/plat-linux2', '/usr/local/lib/python2.7/lib-tk', '/home/vagrant/venvs/lib/python2.7/site-packages']

Как я могу убедиться, что v1.5.0 используется?

1 ответ

Решение

Я потратил кучу времени на подобную проблему сегодня вечером, так что надеюсь, что это поможет: google-api-python-client библиотека, используемая для связывания oauth2client Библиотека, пока она не была выделена в отдельный пакет. Если у вас есть google-api-python-client<=1.2 установлено, это может помешать вашей установке oauth2client в зависимости от того, в каком порядке вы установили библиотеки или PYTHONPATH,

Python (с пакетами, установленными через pip) не дает никаких гарантий, что папка, в которой вы найдете site/dist-packages фактически установлен пакетом с тем же именем.

Другие вопросы по тегам