2015-03-22 10 views
18

Es sieht so aus, als bestünde hier möglicherweise ein Versionskonfliktproblem. Wie soll ich es beheben?Attribut Fehler beim Ausführen des Gmail-API-Schnellstarts in Python

Ich habe versucht, sechs mit Pip zu aktualisieren, aber das tut nichts.

Hier ist der Fehler, den ich sehe:

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' 
+0

Versuch 'installieren pip -U six' w3lib – itzMEonTV

+0

' installieren pip -U w3lib six' nicht – rstackhouse

+1

Arbeit tat dies im Rahmen einer bekannten [Ausgabe auf Github] diskutiert wird (https://github.com/ Google/Google-API-Python-Client/Probleme/100). Work-arounds umfassen das Downgrade auf Version 1.3.2 wie in [Theolodus] (http://stackoverflow.com/users/3249000/theolodus) oder das Setzen der PYTHONPATH-Variable 'export PYTHONPATH =/Library/Python/2.7/site-packages' wie erwähnt von [jwadsack] (http://stackoverflow.com/users/201911/jwadsack) – Matt

Antwort

26

Ich lief in ein sehr ähnliches Problem, eine ganz andere API (Compute Engine), wenn auch mit. Am Ende habe ich den Google API Client auf die vorherige Version 1.3.2 zurückgesetzt - im Gegensatz zur letzten - 1.4.0. Um dies zu tun, ich lief:

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

Und war dann in der Lage meinen Code auszuführen.

Ich bin mir nicht sicher, ob das das gleiche Problem ist, aber es scheint der Trick für mich getan zu haben, hoffe, dass dies hilft.

+0

Irgendeine Idee, warum das notwendig war? – rstackhouse

+0

Wie hast du herausgefunden, was die vorherige Version war? Ich konnte nur den aktuellen finden. 'dotter -V google-api-python-client $ google-api-python-client 1.4.0' – rstackhouse

+0

Verpatzung. https://pypi.python.org/pypi/google-api-python-client/json – rstackhouse

15

Die Ursache des Problems herausgefunden - die vorinstallierte OSX-Version von sechs (1.4.1) wird geladen, weil ihre Position zuerst auf Ihrem Python-Pfad steht.

Die von gmail (1.6.1) benötigte Version ist daher abgeschirmt und wird daher nie importiert.

Eine schnelle Lösung besteht darin, das 1.6.1-Installationsverzeichnis dem Python-Pfad voranzulegen, damit es vor der Version 1.4.1 geladen wird. Nicht die beste Lösung, aber es funktioniert.

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

Oder noch besser, repariere einfach dein '~/.bash_profile', um das dauerhaft zu exportieren:' export PYTHONPATH =/Library/Python/2.7/site-packages' – jwadsack

+0

das hat das Problem für mich gelöst. Danke! –

+0

Enthalten die PYTHONPATH-basierte Lösung im Schnellstart in einem Abschnitt zur Problembehandlung: https://developers.google.com/gmail/api/quickstart/python#troubleshooting –

Verwandte Themen