无法使用webapp2 / Google App Engine加载jinja2

我正在使用我的Mac上的GoogleAppEngineLauncher进行GAE webapp2教程(运行时2.7),尽管我正在关注所有内容,但我们在导入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())文件“/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py”,第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”,第640行,在Decorate return func(self,* args,** kwargs)文件“/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/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_import_hook.py”,行640,位于Decorate return func( self,* args,** kwargs)FindAndLoadModule中的文件“/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_import_hook.py”,第1628行描述)文件“/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_import_hook.py”,第640行,在Decorate return func(self,* args ,** kwargs)文件“/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/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,它可以正常工作。 为什么它会在本地失败?


webapp2打包自己的jinja2'glue'模块,这就是你正在导入的模块,但它并不包装jinja2本身。 如果你想使用它,你需要使用easy_install将它安装到你的系统Python中,或者把它放到你应用程序的目录中。


不要使用app.yaml文件中的latest参数,指定一个版本以防止出现极不可能但仍然可能的不兼容性灾难。

别名,根据文档指定2.6,这是唯一支持的。

libraries:
- name: jinja2
  version: "2.6"

然后,在您的脚本中,只需import jinja2 ,就像文档告诉我们的那样。


我也得到了这个错误,为了解决它我需要将jinja2添加到我的app.yaml文件的底部(正如它在本教程开始时所说的那样。)

首先将以下内容添加到helloworld / app.yaml的底部:

libraries:
- name: jinja2
  version: latest
链接地址: http://www.djcxy.com/p/88689.html

上一篇: Can't load jinja2 with webapp2/Google App Engine

下一篇: App Engine: TypeError in handlers.py