Не могу загрузить jinja2 с помощью webapp2 / Google App Engine - PullRequest
8 голосов
/ 15 ноября 2011

Я прохожу учебное пособие по GAE webapp2 (среда выполнения 2.7), используя GoogleAppEngineLauncher на моем Mac, и, хотя я точно следую всем, я продолжаю получать сообщение об ошибке, когда мы импортируем модуль Jinja2: Использование шаблонов - Google App Engine

Ошибка:

Трассировка (последний последний вызов): Файл "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py ", строка 168, в обработчике дескриптора = _config_handle.add_wsgi_middleware (файл приложения self._LoadHandler (Google) ()).app / Contents / Resources / GoogleAppEngine-default.bundle / Contents / Resources / google_appengine / google / appengine / runtime / wsgi.py ", строка 206, в обработчике _LoadHandler = путь к файлу импорта (путь [0])" / Applications / GoogleAppEngineLauncher.приложение / Содержание / Ресурсы / GoogleAppEngine-default.bundle / Содержание / Ресурсы / google_appengine / Google / AppEngine / инструменты / dev_appserver_import_hook.py ", строка 640, в файле 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 ", строка 1756, в load_module возвращает self.FindAndLoadModule (подмодуль, полное имя, search_path) Файл" /Applications/GoogleAppEngineLauncher.app/Contents/Resources/Google/ppEngine-deourcesgundRapp.ng/appengine/tools/dev_appserver_import_hook.py ", строка 640, в файле Decorate return func (self, * args, ** kwargs) Файл" /Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resourcesgoogle_appengine / google / appengine / tools / dev_appserver_import_hook.py ", строка 1628, в описании FindAndLoadModule) Файл" /Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Conoogle/appgineses/ dev_appserver_import_hook.py ", строка 640, в файле Decorate return func (self, * args, ** kwargs) File" /Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/tools/dev_appserver_import_hook.py ", строка 1571, в описании LoadModuleRestricted) Файл" /Users/ykessler/Dropbox/appgrinders/gae_apps/helloworld2.7/helloworld.py ", строка 9, в импорте jinja2 ImportError: нет модуля с именем jinja2

Так что он по какой-то причине не может найти модуль, даже если он должен быть упакован как часть дополнительных функций webapp2.Когда я выполняю поиск в моей файловой системе, она выглядит так:

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

И если я разверну приложение в GAE, оно будет работать нормально.Почему бы это терпеть неудачу локально?

Ответы [ 3 ]

7 голосов
/ 22 апреля 2012

Не используйте параметр latest в файле app.yaml, укажите версию, чтобы предотвратить крайне маловероятную, но, тем не менее, возможную катастрофу несовместимости.

Псевдоним, укажите 2.6, который является единственным поддерживаемымв соответствии с документами .

libraries:
- name: jinja2
  version: "2.6"

Затем, по вашему сценарию, просто import jinja2, как нам сказали документы .

7 голосов
/ 15 ноября 2011

webapp2 упаковывает свой собственный модуль jinja2 'glue', который вы импортируете, но он не упаковывает сам jinja2.Если вы хотите использовать его, вам нужно установить его в системном Python с помощью easy_install или поместить в каталог вашего приложения.

2 голосов
/ 08 марта 2012

Я тоже получил эту ошибку, чтобы исправить ее, мне нужно было добавить jinja2 в конец файла app.yaml (как сказано в начале урока ..)следующее в конец helloworld / app.yaml:

libraries:
- name: jinja2
  version: latest
...