2014-12-13 4 views
16

mit Ich habe versucht, ein Projekt auf Google App Engine über appcfg.py zu aktualisieren:Unexpected Schlüsselwort-Argument „Kontext“, wenn appcfg.py

C:\> "C:\Program Files (x86)\Google\google_appengine\appcfg.py" update c:\secondApp 

Aber ich bekomme die folgende Fehlermeldung sofort (obere Zeilen werden ignoriert):

File "C:\Python27\lib\urllib2.py", line 1240, in https_open 
    context=self._context) 
TypeError: do_open() got an unexpected keyword argument 'context' 

entschied ich mich in die Datei urllib2.py und finden Sie das Problem zu graben. Nach ein paar Minuten Code-Überprüfung kam ich zu der Schlussfolgerung, dass eine Überladung, die einen Parameter mit dem Namen context akzeptiert, nicht existiert. Also änderte ich den ursprünglichen Code-Schnipsel:

def https_open(self, req): 
    return self.do_open(httplib.HTTPSConnection, req, 
     context=self._context) 

zu

def https_open(self, req): 
    return self.do_open(httplib.HTTPSConnection, req) 

und Voila! Es funktioniert (obwohl ein anderes Problem bezüglich der Authentifizierung auftritt, aber das erste Problem gelöst wird). Aber es ist sehr seltsam, dass es in einer offiziellen Version einen Bug wie diesen gibt, während sehr wahrscheinlich andere Leute das gleiche Problem haben. Überraschenderweise konnte ich dieses Problem von niemandem anders gefunden finden!

Ist das Modul falsch? Mische ich falsche Versionen von installierten Paketen? Irgendeine Hilfe?

Meine Google App Engine SDK Version: 1.9.17 x64

Meine installierte Python Version: 2.7.9 x64

Meine Plattform: Windows 8.1 x64

und ich bin nicht vertraut mit Python: D

Lösung:

Als Migel Tissera das Problem erwähnt ist über Authentifizierung. Aber ich habe seinen vorgeschlagenen Befehl ausprobiert und den gleichen Fehler bekommen. Zum Glück habe ich folgenden Befehl und Erfolg ausgeführt! (I hinzugefügt --noauth_local_webserver und --no_cookies schaltet auch):

appcfg.py --noauth_local_webserver --oauth2 --skip_sdk_update_check --no_cookies update c:\secondApp 
+1

Dies könnte auch ein Fehler sein mit [GAE am 2.7.9] (http: // stackoverflow.com/questions/27453497) –

+0

Haben Sie die Bestätigung in zwei Schritten für dieses Google-Konto aktiviert? – whiteshooz

+0

@whiteshooz No I do not – Alireza

Antwort

25

Ich lief in das gleiche Problem etwa eine halbe Stunde vor .. Es ist eigentlich nichts mit der urllib2 Datei zu tun, es muss sich etwas zu tun mit der Authentifizierung. Dieses regelte es für mich ..

Verwenden appcfg.py mit --oauth2 Flagge. Versuchen Sie dies, appcfg.py --oauth2 Update/Pfad/zu/Ihrer/App. Beim ersten Mal sehen Sie das Browserfenster, in dem Sie Zugriff auf Ihr Konto benötigen. Dann können Sie Ihre App bereitstellen, ohne E-Mail und Passwort eingeben zu müssen.

Ich hoffe, das hilft. Freut mich, meine erste Antwort hier zu posten! :)

Danke, Migel

+0

Wissen Sie, wie man den Remote-API-Client OAuth2 akzeptiert? Im Moment gibt das Aufrufen der Remote-Shell leider den gleichen Fehler (d. H. $ GAE_SDK_ROOT/remote_api_shell.py -s .appspot.com). – Alice

+0

Dank bro. Es hat mir geholfen. –

+0

Ihre Antwort ist großartig, funktioniert aber in meinem Fall nicht. Siehe das Update. Ich habe geupdated. – Alireza

-1

Dieser Fehler auftreten könnte, auch wenn eine inkompatible Version der App Engine SDK.

In meinem Fall wurde das SDK repariert.

Verwandte Themen