ImportError:无法从“jinja2”导入名称“escape”

问题描述 投票:0回答:8

我收到错误消息

ImportError:无法从“jinja2”导入名称“escape”

尝试使用以下requirements.txt运行代码时:

chart_studio==1.1.0
dash==2.1.0
dash_bootstrap_components==1.0.3
dash_core_components==2.0.0
dash_html_components==2.0.0
dash_renderer==1.9.1
dash_table==5.0.0
Flask==1.1.2
matplotlib==3.4.3
numpy==1.20.3
pandas==1.3.4
plotly==5.5.0
PyYAML==6.0
scikit_learn==1.0.2
scipy==1.7.1
seaborn==0.11.2
statsmodels==0.12.2
urllib3==1.26.7

试过

pip install jinja2

但是要求已经满足了
在 Windows 系统上运行此代码。

python-3.x compiler-errors jinja2 pydash
8个回答
155
投票

Jinja 是 Flask 的依赖项,Flask V1.X.X 使用来自 Jinja 的

escape
模块,但是最近对
escape
模块的支持在新版本的 Jinja被删除。

要解决此问题,只需在 requirements.txt 中更新到更新版本的 Flask V2.X.X,其中 Flask 不再使用来自 Jinja 的

escape
模块。

Flask>=2.2.2

另外,请注意团队不再支持 Flask V1.X.X。如果您想继续使用这个旧版本,这个 Github 问题可能会有所帮助。


46
投票

发生这种情况是因为 Jinja 在最新版本 3.1.0 中删除了这些功能于 2022 年 3 月 24 日发布.

Markup
escape
应该从 MarkupSafe 导入。

这里有两个选项:

  1. 此错误是否来自您的依赖项之一。
    您应该考虑的第一件事是升级上述依赖项。
    如果这不可能,您可以从这里将您的 Jinja 版本降级为仍包含

    escape
    的版本,例如,将其明确添加到您的requirements.txt:

    jinja2<3.1.0
    
  2. 或者,您的错误来自您编写的代码,因此您可以按照 Jinja 发行说明中的建议,通过从 MarkupSafe 导入它来修复它。

    所以,你应该使用

    from markupsafe import escape
    

    代替

    from jinja2 import escape
    

13
投票

只需更新你的 Flask 版本,它对我有用

Flask==2.1.0

9
投票

所以发生在我身上的是,我在 github 上克隆了一个 repo,并安装了 flask,并使用命令

pip install -r requirements.txt
激活了我的 virtualenv 但是当我尝试运行服务器时,它出现了错误:

ImportError:无法从“jinja2”导入名称“escape”

所以我所做的是运行命令

pip uninstall flask
并通过运行
pip install flask
重新安装它,然后再次运行我的服务器,然后它工作了。

简单的解决方案

pip uninstall flask

然后

pip install flask 

1
投票

ImportError:无法从“jinja2”导入名称“escape”

这发生在我使用 Voila 和 jupyter notebook 并使用以下方法解决:

  1. 去这个目录
    C:\Users\admin\anaconda3\Lib\site-packages\nbconvert\filters\ansi.py
  2. 将此行添加到文件的第一行
    from markupsafe import escape
  3. 也把这行代码
    text = jinja2.utils.escape(text)
    改成
    text = escape(text)

0
投票

只需将 jinja2 降级到低稳定版本即可解决问题,

pip install Jinja2==3.0.3

参考


0
投票

这对我有用!

!pip install --upgrade babel
!pip install --upgrade python-dateutil
!pip install --upgrade flask-moment
!pip install --upgrade flask-wtf
!pip install --upgrade flask_sqlalchemy

0
投票

根据 change logs 对于 3.1.x 以上的版本,需要使用 escape from markupsafe 而不是来自 jinja2

所以使用

escape

from markupsafe import escape
© www.soinside.com 2019 - 2024. All rights reserved.