试图在Python中运行Gmail API快速入门的属性错误

时间:2015-03-22 03:24:31

标签: python oauth-2.0 gmail-api

看起来这里可能存在版本不匹配问题。我该怎么办呢?

我尝试用pip更新六个,但这没有做任何事情。

这是我看到的错误:

Traceback (most recent call last):
  File "./quickstart.py", line 27, in <module>
    credentials = run(flow, STORAGE, http=http)
  File "/Library/Python/2.7/site-packages/oauth2client/util.py", line 137, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "/Library/Python/2.7/site-packages/oauth2client/old_run.py", line 120, in run
    authorize_url = flow.step1_get_authorize_url()
  File "/Library/Python/2.7/site-packages/oauth2client/util.py", line 137, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "/Library/Python/2.7/site-packages/oauth2client/client.py", line 1827, in step1_get_authorize_url
    return _update_query_params(self.auth_uri, query_params)
  File "/Library/Python/2.7/site-packages/oauth2client/client.py", line 435, in _update_query_params
    parts = urllib.parse.urlparse(uri)
AttributeError: 'Module_six_moves_urllib_parse' object has no attribute 'urlparse'

2 个答案:

答案 0 :(得分:26)

我遇到了一个非常类似的问题,尽管使用了完全不同的API(计算引擎)。我最终将谷歌api客户端回滚到之前的版本 - 1.3.2 - 而不是最新版本 - 1.4.0。为此,我跑了:

sudo pip install -I google-api-python-client==1.3.2

然后能够运行我的代码。

我不确定这是否是同样的问题,但它似乎已经为我做了伎俩,希望这会有所帮助。

答案 1 :(得分:15)

找出问题的根源 - 预先安装的OSX版本的六(1.4.1)是加载的,因为它的位置首先在你的python路径上。

gmail(1.6.1)所需的版本因此被屏蔽,因此永远不会导入。

快速修复只是将1.6.1安装目录添加到python路径,因此它在1.4.1版本之前加载。不是最好的解决方案,但它确实有效。

import sys
sys.path.insert(1, '/Library/Python/2.7/site-packages')