2011-11-14 14 views
8

Sto seguendo il tutorial di GAAP webapp2 (runtime 2.7) utilizzando GoogleAppEngineLauncher sul mio Mac, e sebbene seguo esattamente tutto, continuo a ricevere un errore punto in cui importiamo il modulo Jinja2: Using Templates - Google App EngineImpossibile caricare jinja2 con webapp2/Google App Engine

Errore:

Traceback (most recent call last): File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py", line 168, in Handle handler = _config_handle.add_wsgi_middleware(self._LoadHandler()) File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py", line 206, in _LoadHandler handler = import(path[0]) File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 640, in Decorate return func(self, *args, **kwargs) File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 1756, in load_module return self.FindAndLoadModule(submodule, fullname, search_path) File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 640, in Decorate return func(self, *args, **kwargs) File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 1628, in FindAndLoadModule description) File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 640, in Decorate return func(self, *args, **kwargs) File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 1571, in LoadModuleRestricted description) File "/Users/ykessler/Dropbox/appgrinders/gae_apps/helloworld2.7/helloworld.py", line 9, in import jinja2 ImportError: No module named jinja2

Così è per qualche ragione non riesce a trovare il modulo, anche se si suppone di essere confezionati come parte di comparse di webapp2. Quando faccio una ricerca sul mio file system sembra che è lì:

/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2/webapp2_extras/jinja2.py 

E se schiero l'applicazione per GAE, funziona benissimo. Perché dovrebbe fallire localmente?

+0

Perché hai modificato la domanda per rimuovere dettagli utili? –

+0

Ri-aggiunto lo stacktrace – Yarin

risposta

7

webapp2 pacchetti il ​​proprio modulo 'colla' jinja2, che è ciò che si sta importando, ma non impacchetta jinja2 stesso. Se vuoi usarlo, devi installarlo nel tuo sistema Python usando easy_install, o inserirlo nella directory della tua app.

+1

grazie- quando ho aggiunto il modulo nella directory dell'app ha funzionato. Quindi qual è lo scopo di un modulo 'colla'? – Yarin

+1

@Yarin Controlla i documenti webapp2 - fornisce elementi utili per rendere più facile l'uso di jinja2 da webapp2. –

+0

I passaggi più semplici per installare jinja 2 possono essere trovati [qui] (http://jinja.pocoo.org/docs/intro/#from-the-tarball-release) – Boinst

2

ho ottenuto questo errore troppo, per risolvere il problema ho bisogno di aggiungere Jinja2 al fondo del mio file app.yaml (come si dice all'inizio del tutorial ..)

First add the following to the bottom of helloworld/app.yaml:

libraries: 
- name: jinja2 
    version: latest 
7

Non utilizzare il parametro latest nel file app.yaml, specificare una versione per impedire una catastrofe di incompatibilità altamente improbabile ma comunque possibile.

Alias, specificare 2.6, che è l'unico supportato, in base a the docs.

libraries: 
- name: jinja2 
    version: "2.6" 

Poi, a script, basta import jinja2, come c'è stato detto da the docs.