OAuth 2.0 适用于使用 Python 3.4 的服务器到服务器应用程序,无法导入名称'SERVICE_ACCOUNT'



我正在尝试在我的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文件,然后重新运行我的程序,没有任何问题。

相关内容

  • 没有找到相关文章

最新更新