无法使用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