ImportError: cannot import name 'escape' from 'jinja2'

ImportError: cannot import name 'escape' from 'jinja2'

我遇到了错误

ImportError: cannot import name 'escape' from 'jinja2'

尝试使用以下 运行 代码时 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 系统上。

发生这种情况是因为 Jinja 在最新版本 — 3.1.0 — released on March 24th, 2022.

中删除了这些功能

Markup and escape should be imported from MarkupSafe.

这里有两个选项:

  1. 此错误可能来自您的依赖项之一。
    您应该考虑的第一件事是升级上述依赖项。
    如果这是不可能的,你可以做的是,从这里将你的 Jinja 版本降级到仍然包含 escape 的版本,例如,在你的 requirements.txt 中明确添加它:

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

    所以,你应该使用

    from markupsafe import escape
    

    而不是

    from jinja2 import escape
    

Jinja 是 Fl​​ask 的依赖项,Flask V1.X.X 使用 Jinja 的 escape 模块,但是最近对 escape 模块的支持是 dropped in newer versions of Jinja.

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

Flask==2.1.0

此外,请注意 Flask V1.X.X 不再受团队支持。如果您想继续使用这个旧版本,this Github issue may help.

ImportError: cannot import name 'escape' from 'jinja2'

我在使用 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)