2013-01-22 9 views
8

Nel mio ambiente di sviluppo del motore di app Google, vorrei utilizzare una shell ipython, soprattutto per poter controllare i modelli con dati creati tramite dev_server.py, molto simili ai come funziona il comando manage.py shell di django.IPython locale (sviluppo) di Google App Engine Shell

(Questo significa che il guscio ipython dovrebbe essere iniziato dopo sys.path è fissato e app.yaml stato letto e analizzato, e l'archivio dati locale è pronto)

Qualunque semplice soluzione per questo?

+0

Questo sembra un buon inizio: http://pythonwise.blogspot.co.il/2011/02/appengine-work-environment. html – Udi

risposta

7

Per i principianti, è possibile inserire la directory principale dell'applicazione e la directory root dell'SDK (google_appengine) nel percorso Python. Avrai anche bisogno di alcune librerie come yaml, installate o aggiunte al percorso della libreria dalla directory lib dell'SDK. Quindi puoi importare moduli e chiamare alcune funzionalità.

>>> import sys 
>>> sys.path.append('/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine') 

Naturalmente, non appena un percorso di codice tenta di effettuare una chiamata di servizio, la biblioteca sarà sollevare un'eccezione, dicendo che non è legato a nulla. Per associare le librerie di servizio per testare stub, utilizzare la libreria banco di prova:

>>> from google.appengine.ext import testbed 
>>> tb = testbed.Testbed() 
>>> tb.activate() 
>>> tb.init_datastore_v3_stub() 
>>> from google.appengine.ext import db 
>>> import models 
>>> m = models.Entry() 
>>> m.title = ‘Test’ 
>>> m.put() 

A dire il test stub archivio dati da usare file archivio dati del server di sviluppo, passare il percorso del file per init_datastore_v3_stub() come argomento datastore_file. Vedere il commento del doc per il metodo in google.appengine.ext.testbed per ulteriori informazioni.

Per ulteriori informazioni sul banco di prova: https://developers.google.com/appengine/docs/python/tools/localunittesting

+0

Questo è quello che uso per i test in un ambiente pulito. Sto cercando qualcosa di semplice come eseguire 'gae_shell' per avviare una shell locale con il datastore locale" attuale ". – Udi

+0

Ciò che ho descritto sembra facilmente eseguibile tramite script con IPython, incluso il passaggio del file del datastore all'inizializzatore dello stub. Ne hai bisogno per fare di più? –

1

In pratica avrete bisogno di utilizzare questo: https://developers.google.com/appengine/articles/remote_api

Per il supporto IPython si hanno due opzioni:

(1) Se si sta lavorando con Python 2.7 (e IPython 0,13) sarà necessario utilizzare questo per incorporare un guscio IPython:

from IPython.frontend.terminal.interactiveshell import TerminalInteractiveShell 
shell = TerminalInteractiveShell(user_ns=namespace) 
shell.mainloop() 

(2) Se si workin g con Python 2.5 (e IPython 0.10.2) è necessario utilizzare questa linea per incorporare un guscio IPython:

from IPython.Shell import IPShellEmbed 
ipshell = IPShellEmbed(user_ns=namespace, banner=banner) 
ipshell() 

Questo è quello che uso: https://gist.github.com/4624108 quindi basta digitare ..

>> python console.py your-app-id 
0

Una volta che si esegue dev_appserver.py otterrete

starting module "default" running at: http://127.0.0.1:8080 
Starting admin server at : http://localhost:8000 

quindi, in pratica ciò che si vuole fare è quello di accedere http://localhost:8000 e lì troverai "Interactive Console" che puoi usare per giocare con

Problemi correlati