Google App Engine jinja2: ошибка импорта: нет модуля с именем _markupsafe

#google-app-engine

#google-app-engine

Вопрос:

Если вы будете следовать руководству по началу работы с Python2.7, вы доберетесь до части создания шаблонов здесь. Для меня в Ubuntu 11.10 я бы получил ужасную трассировку стека, которая заканчивалась:

   File "/home/fratrik/code/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 1571, in LoadModuleRestricted
    description)
  File "/usr/lib/python2.7/dist-packages/jinja2/utils.py", line 587, in <module>
    from jinja2._markupsafe import Markup, escape, soft_unicode
ImportError: No module named _markupsafe
  

Важная часть на самом деле находится вверху:

 ERROR    2011-11-13 00:48:12,767 dev_appserver_import_hook.py:1386] Third party package markupsafe must be included in the "libraries:" clause of your app.yaml file in order to be imported.
  

Ответ №1:

Ответ заключается в том, чтобы добавить следующее к вашему app.yaml

 libraries:                                                                      
- name: jinja2                                                                  
  version: latest                                                               
- name: markupsafe                                                              
  version: latest                                                                                
  

(для python2.7)

Ответ №2:

Вы можете импортировать модуль jinja2, который поставляется вместе с app engine sdk. Добавьте путь к google_appengine/lib/webapp2 и google_appengine/lib/webapp2/webapp2_extras каталогам в свой $PYTHONPATH .

 import webapp2
from webapp2_extras import jinja2
  

вместе с записями yaml.

Комментарии:

1. Это не импортирует jinja2. webapp2_extras.jinja2 является оболочкой.

2. sudo easy_install jinja2, чтобы загрузить его в свои локальные библиотеки. Вы правы 🙂