GSpread ImportError:没有名为oauth2client.service_acoun的模块

2024-09-19 20:38:41 发布

您现在位置:Python中文网/ 问答频道 /正文

好的,我正在跟随成为一个技术营销课程,我正在努力学习如何管理谷歌电子表格与GSpread。我已经在http://gspread.readthedocs.io/en/latest/oauth2.html跟踪了文档。我已经按照上面第二个URL中的步骤运行了一个包含以下代码的文档:

import gspread
from oauth2client.service_account import ServiceAccountCredentials

scope = ['https://spreadsheets.google.com/feeds']

credentials = ServiceAccountCredentials.from_json_keyfile_name('DFS Google Sheets Data Imports-7205de852ff7.json', scope)

gc = gspread.authorize(credentials)

wks = gc.open("Authority Scraper").sheet1
wks.update_cell(1,2,"Hello World!")

由此我得到了终端中的错误:From oauth2client.service_account import ServiceAccountCredentials ImportError:没有名为oauth2client.service_account的模块

terminal error printout

有人请帮帮我。其他没有模块名为oath2client.service_account的答案对我不起作用。谢谢!


Tags: 模块from文档importjsonserviceaccountgc
3条回答

运行这个命令对我有效- sudo pip install --upgrade oauth2client

从oauth2client库githubrepo中得到的

根据this discussion

This is because OS X El Capitan ships with six 1.4.1 installed already and when it attempts to uninstall it, it doesn't have permission to do so because System Integrity Protection doesn't allow even root to modify those directories.

在回答中提到的少数解决方法中,可能值得尝试pip install --ignore-installed six,以避免尝试卸载系统的six包。

所以我也遇到了这个问题,最后成了我的路径问题。当然,我知道这有点牵强(因为每个人的开发环境都不一样),但是在这里写这篇文章是为了帮助其他人。

TLDR确保您的$PYTHONPATH没有弄脏任何东西。

回想一下,在python中执行“导入”时,python会检查sys.path中的包。此列表具有优先顺序(即,如果在列表中的较早路径中找到包,则将使用该包)。

在我的例子中,看起来我的$PYTHONPATH在前一段时间做一些appengine的事情时被修改了。事实证明,我的appengine有自己的oauth2client库,这个库已经很老了。

结果,当python尝试from oauth2client.service_account时,它捕获appengine中的oauth2client,而不是我期望它捕获的oauth2client(这是$PYTHONPATH被修改的结果)。

您可以在导入调用之前打印sys.path来验证是否也发生了这种情况:

import sys
print sys.path
from oauth2client.service_account import ServiceAccountCredentials

在我的例子中,我可以清楚地看到一堆优先的路径。这让我检查一下我的~/.bash_profile我在哪里找到了这条线:

export PYTHONPATH=$PYTHONPATH::$LOCAL_APPENGINE_HOME/lib/:$LOCAL_APPENGINE_HOME/lib/yaml/:$LOCAL_APPENGINE_HOME:$LOCAL_APPENGINE_HOME/lib/webapp2-2.5.2/`

评论说,开始了一个新的外壳和一切工作的花花公子。

相关问题 更多 >