Vraag Attribuutfout bij het uitvoeren van de snelstart van de Gmail API in Python


Het lijkt erop dat er mogelijk een probleem is met betrekking tot het probleem van de versie. Hoe moet ik het oplossen?

Ik heb geprobeerd om zes met pip bij te werken, maar dat doet niets.

Dit is de fout die ik zie:

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
2018-03-22 03:24


oorsprong


antwoorden:


Ik kwam een ​​zeer vergelijkbaar probleem tegen, zij het met een geheel andere API (compute engine). Ik eindigde met het terugdraaien van de google api-client naar de vorige versie - 1.3.2 - in tegenstelling tot de nieuwste - 1.4.0. Om dit te doen, stelde ik:

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

En was toen in staat om mijn code uit te voeren.

Ik weet niet zeker of dit hetzelfde probleem is, maar het lijkt de truc voor mij te hebben gedaan, ik hoop dat dit helpt.


26
2018-03-24 16:08



De oorzaak van het probleem - de vooraf geïnstalleerde OSX-versie van zes (1.4.1) is de geladen versie omdat de locatie het eerst op je pythonpad staat.

De versie vereist door gmail (1.6.1) is daarom afgeschermd en daarom nooit geïmporteerd.

Een snelle oplossing is alleen maar om de installatiemap van 1.6.1 aan uw pythonpad toe te voegen, dus deze is vóór de 1.4.1-versie geladen. Niet de beste oplossing, maar het werkt.

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

15
2018-04-09 04:11