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

时间:2011-11-14 22:04:08

标签: macos google-app-engine webapp2

我正在Mac上使用GoogleAppEngineLauncher浏览GAE webapp2教程(运行时2.7),虽然我完全遵循了所有内容,但在导入Jinja2模块时仍然出现错误:{{3 }}

错误:

  

Traceback(最近一次调用最后一次):文件   “/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py”   第168行,在Handle handler =中   _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行,在_LoadHandler handler = import(path [0])文件中   “/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_import_hook.py”   第640行,在Decorate中返回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(子模块,   fullname,search_path)文件   “/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_import_hook.py”   第640行,在Decorate中返回func(self,* args,** kwargs)文件   “/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_import_hook.py”   第1628行,在FindAndLoadModule描述中)文件   “/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_import_hook.py”   第640行,在Decorate中返回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,它可以正常工作。为什么会在本地失败?

3 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:7)

请勿在app.yaml文件中使用latest参数,指定版本以防止极不可能但仍可能存在不兼容的灾难。

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

libraries:
- name: jinja2
  version: "2.6"

然后,在您的脚本中,只有import jinja2,正如the docs告诉我们的那样。

答案 2 :(得分:2)

我也得到了这个错误,修复它我需要将jinja2添加到我的app.yaml文件的底部(正如教程开头所说的那样)。

  

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

libraries:
- name: jinja2
  version: latest