2014-12-13 10 views
16

ho cercato di aggiornare un progetto su Google App Engine tramite appcfg.py:imprevisto argomento chiave "contesto" quando si utilizza appcfg.py

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

ma ottengo il seguente errore immediatamente (top linee vengono ignorate):

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

ho deciso di scavare nel file urllib2.py e trovare il problema. Dopo alcuni minuti di revisione del codice, sono giunto a questa conclusione che un sovraccarico che accetta un parametro denominato context non esiste. Così, ho cambiato il frammento di codice originale:

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

a

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

e voilà! Funziona (sebbene sorga un altro problema riguardante l'autenticazione, ma il primo problema viene risolto). Ma è molto strano che in una versione ufficiale esista un bug come questo mentre è molto probabile che altre persone abbiano riscontrato lo stesso problema. Sorprendentemente, non ho potuto trovare questo problema segnalato da nessun altro!

C'è qualcosa di sbagliato nel modulo? Sto mescolando le versioni sbagliate dei pacchetti installati? Qualsiasi aiuto?

mio Google App Engine SDK Versione: 1.9.17 x64

mio installata Python Versione: 2.7.9 x64

mio Piattaforma: Windows 8.1 x64

e non ho familiarità con Python: D

Soluzione:

Come Migel Tissera menzionato il problema è di circa autenticazione. Ma ho provato il suo comando proposto e ho ottenuto lo stesso errore. Fortunatamente, ho eseguito il seguente comando e successo! (--noauth_local_webserver ho aggiunto e --no_cookies switch troppo):

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

Questo potrebbe anche essere un bug con [GAE on 2.7.9] (http: // stackoverflow.it/questions/27453497) –

+0

Hai attivato la verifica in due passaggi per questo account Google? – whiteshooz

+0

@whiteshooz No I non – Alireza

risposta

25

ho corso per lo stesso problema circa mezz'ora fa .. E 'in realtà nulla a che fare con il file urllib2, è ottenuto qualcosa da fare con l'autenticazione. Questo ha risolto il tutto per me ..

Usa appcfg.py con --oauth2 bandiera. Prova questo, appcfg.py --oauth2 update/path/to/your/app. Nella prima volta vedrai la finestra del browser in cui dovrai consentire l'accesso al tuo account. Quindi puoi implementare la tua app senza inserire email e password.

Spero che questo aiuti. Felice di pubblicare la mia prima risposta qui! :)

Grazie, Migel

+0

Sai come rendere il client API remoto accetta OAuth2? Al momento, invocare la shell remota dà lo stesso errore (ad esempio $ GAE_SDK_ROOT/remote_api_shell.py -s .appspot.com), sfortunatamente.) – Alice

+0

Grazie fratello. Mi ha aiutato. –

+0

La tua risposta è ottima, ma non funziona nel mio caso. Guarda l'aggiornamento. I upvot. – Alireza

-1

Questo errore può verificarsi anche quando si utilizza una versione non compatibile del AppEngine SDK.

Nel mio caso l'aggiornamento dell'SDK l'ha risolto.

Problemi correlati