我正在尝试在我的Python 3.4应用程序中实现"服务器到服务器"OAuth身份验证以与Google Cloud Storage配合使用。因此,通常在此页面上进行了描述 对服务器到服务器应用程序使用 OAuth 2.0
但是运行脚本时出现错误:
回溯(最近一次调用):
导入
文件"my_script.py",第 4 行,在 从oauth2client.service_account导入服务帐户凭据
文件 "/usr/local/lib/python3.4/dist-packages/oauth2client/service_account.py", 第 31 行,在 从oauth2client.client导入SERVICE_ACCOUNT错误:无法导入名称"SERVICE_ACCOUNT"
所以,这是我的代码:
from apiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials
from httplib2 import Http
scopes = ['https://www.googleapis.com/auth/cloud-platform.read-only']
credentials = ServiceAccountCredentials.from_json_keyfile_name('./keyfile.json', scopes)
http_auth = credentials.authorize(Http())
service = build('storage', 'v1', http=http_auth)
如果你能这么好心地帮我,那就太好了!这是我在Python语言上的第一个脚本之一,我都是Python和Linux世界的新手,所以我可能会错过一些非常明显的东西。
如果很重要,我的操作系统是 Ubuntu 12.04。
谢谢!
我发现google-api-python-client
安装了oauth2client
1.5.2 版本,但它实际上需要 2.0.0 版本。所以,你的pip install oauth2client --upgrade
拯救了你。
嗯,不知何故它开始工作了。对不起,我知道自我回答不是很好,但我花了 2 天时间解决这个问题。
所以,正如我之前提到的,我是Linux世界的新手。我想,oauth2client
重新安装帮助了我。我试图用pip install -Iv oauth2client==1.5.2
将其降级到1.5.2版本,然后在另一次失败后运行pip install oauth2client --upgrade
。
我也用 googleapiclient
替换apiclient
lib ,所以我的第一个字符串现在看起来像from googleapiclient.discovery import build
现在它正在工作,我什至不知道为什么。
抱歉再次自我回答。
我遇到了类似的问题,我遇到了cannot import name xxxx
错误。 事实证明,我的环境中有来自较旧的 oauth2client 版本的旧 *.pyc 文件。 即使我更新到最新的oauth2client版本,当我尝试运行时,*.pyc文件也被使用了。 我只是删除了oauth2client *.pyc文件,然后重新运行我的程序,没有任何问题。