0

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

4

1 回答 1

1

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

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

于 2015-09-21T22:10:28.777 回答