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:没有名为瓶子的模块

ImportError:没有名为枚举的模块

ImportError:没有名为“appdirs”的模块

ImportError:没有名为 websocket 的模块

ImportError:没有名为“backports”的模块

ImportError:没有名为 ghostscript 的模块