ImportError:没有名为 jinja2 的模块
Posted
技术标签:
【中文标题】ImportError:没有名为 jinja2 的模块【英文标题】:ImportError: No module named jinja2 【发布时间】:2013-09-27 11:16:07 【问题描述】:使用 google-app-engine 教程,我收到以下错误堆栈消息:
Traceback (most recent call last):
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\runtime\wsgi.py", line 239, in Handle
handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\runtime\wsgi.py", line 298, in _LoadHandler
handler, path, err = LoadObject(self._handler)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\runtime\wsgi.py", line 84, in LoadObject
obj = __import__(path[0])
File "D:\Dev\SandBoxes\web\omaha\omaha.py", line 4, in <module>
import jinja2
ImportError: No module named jinja2
即使我在 app.yaml 的库中声明了它:
application: ***
version: 1
runtime: python27
api_version: 1
threadsafe: true
libraries:
- name: jinja2
version: latest
- name: webapp2
version: latest
handlers:
- url: /css
static_dir: css
- url: /js
static_dir: js
- url: /img
static_dir: img
- url: /.*
script: omaha.application
有人遇到过类似的问题吗?
【问题讨论】:
【参考方案1】:flask 包抛出此错误时出现此错误:
import flask
File "/usr/local/lib/python2.7/dist-packages/flask/__init__.py", line 19, in <module>
from jinja2 import Markup, escape
ImportError: No module named jinja2
解决方案:
sudo apt-get install python-flask
似乎将 Jinja 安装为依赖项。也许这对某人有帮助。
【讨论】:
【参考方案2】:使用这些命令为 Python 3 安装 pip 和 Jija2:
sudo apt-get install python3-pip
sudo pip3 install Jinja2
【讨论】:
OP 明确标记为python-2.7
,GAE 标准环境中唯一支持的...【参考方案3】:
您可能没有在 app.yaml 中添加以下行:
- name: jinja2
version: latest
【讨论】:
【参考方案4】:要在本地使用Jinja,需要在本地安装
easy_install Jinja2
或
pip install Jinja2
【讨论】:
或使用您的包管理器(在 Linux 中)类似以下之一:apt-get install python-jinja2
(debian/ubuntu) 或 yum install python-jinja2
(redhat) 或 zypper install python-Jinja2
(suse) ` 和/或可能python3-
这些变体
其实在安装GAE sdk jinja2的时候就自带了,所以不需要从其他来源安装。
这个答案是错误的,GAE 应用使用 SDK 中的jinja2
,而不是本地系统 python 安装。【参考方案5】:
需要在 AEL 中重新启动应用程序。
必须重新启动 Google App Engine Launcher 中的应用程序才能考虑新的库调用。 我被所有其他更改都不需要实际重启服务器这一事实误导了。
【讨论】:
【参考方案6】:即使它已在您的库中声明,也不一定意味着开发应用服务器可以在 appengine sdk 中找到该库。
由于您正在运行本教程,我假设您正在从 google 应用引擎启动器运行应用程序。在 laucher 中进入“编辑”>>“首选项”并设置您的 Python 路径和 SDK 路径。
【讨论】:
以上是关于ImportError:没有名为 jinja2 的模块的主要内容,如果未能解决你的问题,请参考以下文章
ImportError:没有名为 websocket 的模块