2011-11-14 12 views
8

Idę przez samouczek webapp2 GAE (Runtime 2.7), używając GoogleAppEngineLauncher na moim Macu i choć Obserwuję wszystko dokładnie, ja ciągle otrzymuję błąd u punkt, w którym możemy zaimportować moduł Jinja2: Using Templates - Google App EngineNie można załadować jinja2 z webapp2/Google App Engine

błąd:

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

więc z jakiegoś powodu nie mogą wybrać moduł, mimo to ma być pakowany w ramach dodatków webapp2 użytkownika. Kiedy zrobić wyszukiwania w moim systemie plików wygląda to tam:

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

A jeśli wdrożyć aplikację do GAE, to działa dobrze. Dlaczego miałoby to zawieść lokalnie?

+0

Dlaczego edytować swoje pytanie do usunięcia użyteczny szczegół? –

+0

Ponownie dodano StackTrace – Yarin

Odpowiedz

7

webapp2 pakiety własną jinja2 moduł „klej”, który jest to, czego import, ale nie pakować jinja2 się. Jeśli chcesz go użyć, musisz zainstalować go w swoim systemie Python za pomocą easy_install lub umieścić w katalogu swojej aplikacji.

+1

thanks- kiedy dodany moduł do katalogu aplikacji to działało. Jaki jest więc cel modułu "kleju"? – Yarin

+1

@ Yarin Sprawdź dokumentację webapp2 - zawiera przydatne informacje ułatwiające używanie jinja2 z webapp2. –

+0

Najprostsze etapy instalowania jinja 2 można znaleźć [o] (http://jinja.pocoo.org/docs/intro/#from-the-tarball-release) – Boinst

2

mam ten błąd też, aby go naprawić musiałem dodać jinja2 do dna mojego pliku app.yaml (jak jest napisane na początku samouczka ..)

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

libraries: 
- name: jinja2 
    version: latest 
7

Nie używaj parametru latest w pliku app.yaml, określ wersję, aby zapobiec wysoce nieprawdopodobnej, ale możliwej katastrofie niekompatybilności.

alias określić 2.6, który jest jedynym obsługiwane acording do the docs.

libraries: 
- name: jinja2 
    version: "2.6" 

Następnie w skrypcie, tylko import jinja2, jak powiedziano nam przez the docs.