Подтвердить что ты не робот

Ошибка атрибута при попытке запустить быстрый запуск API Gmail в Python

Похоже, что здесь может быть проблема с несоответствием версии. Как мне его исправить?

Я пытаюсь обновить шесть с помощью 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'
4b9b3361

Ответ 1

Я столкнулся с очень похожей проблемой, хотя и использовал совершенно другой API (вычислительный движок). Я закончил откатывать клиент google api к предыдущей версии - 1.3.2 - в отличие от последних - 1.4.0. Для этого я побежал:

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

И тогда смог запустить мой код.

Я не уверен, что это одна и та же проблема, но, похоже, она сделала трюк для меня, надеюсь, что это поможет.

Ответ 2

Выяснил источник проблемы - предварительно установленная версия 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')