使用Vagrant时,旧版本的oauth2client卡住了

时间:2015-09-09 17:08:23

标签: python vagrant gcloud-python google-cloud-python

我有一个使用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

据我所知,正在使用oauth2client的旧版本(v1.2),即使我做了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 个答案:

答案 0 :(得分:1)

我今晚在类似的问题上花了很多时间,所以希望这会有所帮助:google-api-python-client用于捆绑 oauth2client库,直到它被拆分为止一个单独的包。如果您安装了google-api-python-client<=1.2,则可能会影响oauth2client的安装,具体取决于您安装库或PYTHONPATH的顺序。

Python(通过pip安装软件包)并不保证您在site/dist-packages中找到的文件夹实际上是由同名软件包安装的。