我正在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,它可以正常工作。为什么会在本地失败?
答案 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