好的,我正在跟随成为一个技术营销课程,我正在努力学习如何管理谷歌电子表格与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的模块
有人请帮帮我。其他没有模块名为oath2client.service_account的答案对我不起作用。谢谢!
运行这个命令对我有效-
sudo pip install --upgrade oauth2client
从oauth2client库githubrepo中得到的
根据this discussion
在回答中提到的少数解决方法中,可能值得尝试
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来验证是否也发生了这种情况:
在我的例子中,我可以清楚地看到一堆优先的路径。这让我检查一下我的
~/.bash_profile
我在哪里找到了这条线:评论说,开始了一个新的外壳和一切工作的花花公子。
相关问题 更多 >
编程相关推荐