Неожиданный аргумент ключевого слова "контекст" при использовании appcfg.py
Я попытался обновить проект в Google App Engine с помощью appcfg.py:
C:\> "C:\Program Files (x86)\Google\google_appengine\appcfg.py" update c:\secondApp
Но я сразу получаю следующую ошибку (верхние строки игнорируются):
File "C:\Python27\lib\urllib2.py", line 1240, in https_open
context=self._context)
TypeError: do_open() got an unexpected keyword argument 'context'
Я решил выкопать файл urllib2.py
и найти проблему. После нескольких минут обзора кода я пришел к такому выводу, что перегрузка, принимающая параметр с именем context
, не существует. Итак, я изменил исходный фрагмент кода:
def https_open(self, req):
return self.do_open(httplib.HTTPSConnection, req,
context=self._context)
к
def https_open(self, req):
return self.do_open(httplib.HTTPSConnection, req)
и Вуаля! Он работает (хотя возникает еще одна проблема аутентификации, но первая проблема решена). Но очень странно, что в официальном выпуске существует ошибка, подобная этой, хотя очень вероятно, что другие люди столкнулись с одной и той же проблемой. Удивительно, но я не мог найти эту проблему, о которой сообщил кто-либо еще!
В модуле что-то не так? Я смешиваю неправильные версии установленных пакетов? Любая помощь?
Моя версия SDK для Google App Engine: 1.9.17 x64
Мой установленный Python Версия: 2.7.9 x64
Моя платформа: Windows 8.1 x64
и я не знаком с Python: D
Решение:
Как сказал Мигель Тиссера, проблема заключается в аутентификации. Но я попробовал его предлагаемую команду и получил ту же ошибку. К счастью, я выполнил следующую команду и успех! (Я добавил --noauth_local_webserver и --no_cookies переключатели тоже):
appcfg.py --noauth_local_webserver --oauth2 --skip_sdk_update_check --no_cookies update c:\secondApp
Ответы
Ответ 1
Я столкнулся с той же проблемой примерно полчаса назад. На самом деле это не имеет никакого отношения к файлу urllib2, это как-то связано с аутентификацией. Это исправило это для меня..
Используйте appcfg.py с флагом - oauth2. Попробуйте это, appcfg.py --oauth2 update/path/to/your/app. В первый раз вы увидите окно браузера, где вам нужно будет разрешить доступ к вашей учетной записи. Затем вы можете развернуть приложение без ввода электронной почты и пароля.
Надеюсь, это поможет. Рад опубликовать свой первый ответ здесь!:)
Спасибо,
Migel
Ответ 2
Эта ошибка может возникать и при использовании несовместимой версии SDK Appengine.
В моем случае обновление SDK было исправлено.