8

我正在我的 Mac 上使用 GoogleAppEngineLauncher 浏览 GAE webapp2 教程(运行时 2.7),虽然我完全按照所有内容进行操作,但在我们导入 Jinja2 模块时仍然出现错误:Using Templates - Google App Engine

错误:

Traceback(最近一次调用最后一次):文件“/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 行,在 _LoadHandler 处理程序 = 导入(路径 [0])文件“/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_import_hook.py”,第 640 行,在装饰返回 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(submodule, fullname, search_path) 文件“/Applications/ GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_import_hook.py",第 640 行,装饰返回 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/内容/资源/GoogleAppEngine-default。bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_import_hook.py”,第 640 行,在装饰中返回 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 行,在 import jinja2 ImportError: No module named jinja2bundle/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 行, 在 import jinja2 ImportError: No module named jinja2bundle/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 行, 在 import jinja2 ImportError: No module named jinja2

所以它出于某种原因找不到该模块,即使它应该被打包为 webapp2 的附加功能的一部分。当我在我的文件系统上进行搜索时,它看起来就在那里:

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

如果我将应用程序部署到 GAE,它就可以正常工作。为什么会在本地失败?

4

3 回答 3

7

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

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

libraries:
- name: jinja2
  version: "2.6"

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

于 2012-04-21T23:05:46.243 回答
7

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

于 2011-11-14T23:17:42.537 回答
2

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

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

libraries:
- name: jinja2
  version: latest
于 2012-03-08T03:27:46.740 回答