使用 Vagrant 时卡在旧版本的 oauth2client
Stuck with old version of oauth2client when using 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
据我所知,正在使用 oauth2client
的旧版本 (v1.2),即使我做了 pip install oauth2client==1.5.0
。这只发生在我的 Vagrant 盒子上(运行ning 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?
今晚我在一个类似的问题上花了很多时间,所以希望这能有所帮助:google-api-python-client
library used to bundle the oauth2client
库,直到它被拆分成一个单独的包。如果您安装了 google-api-python-client<=1.2
,它可能会干扰您安装 oauth2client
,具体取决于您安装库的顺序或您的 PYTHONPATH
.
Python(通过 pip
安装的软件包)不保证您在 site/dist-packages
中找到的文件夹实际上是由同名软件包安装的。
我有一个使用 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 盒子上(运行ning 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?
今晚我在一个类似的问题上花了很多时间,所以希望这能有所帮助:google-api-python-client
library used to bundle the oauth2client
库,直到它被拆分成一个单独的包。如果您安装了 google-api-python-client<=1.2
,它可能会干扰您安装 oauth2client
,具体取决于您安装库的顺序或您的 PYTHONPATH
.
Python(通过 pip
安装的软件包)不保证您在 site/dist-packages
中找到的文件夹实际上是由同名软件包安装的。