web-dev-qa-db-ja.com

Python)でGmailAPIクイックスタートを実行しようとしたときに属性エラーが発生しました

ここにバージョンの不一致の問題があるようです。どうすれば修正できますか?

6つを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'
18
rstackhouse

まったく異なるAPI(Compute Engine)を使用していましたが、非常によく似た問題が発生しました。私は結局、グーグルAPIクライアントを最新の1.4.0ではなく以前のバージョン-1.3.2にロールバックしました。これを行うために、私は実行しました:

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

そして、私のコードを実行することができました。

これが同じ問題であるかどうかはわかりませんが、それは私のためにトリックを行ったようです、これが役立つことを願っています。

26
Theolodus

問題の原因を突き止めました-プレインストールされたOSXバージョンの6(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')
15
Andrew