Import Error: 无法从‘ jinja2’导入名称‘ escape’

我正在接收错误

Import Error: 无法从‘ jinja2’导入名称‘ escape’

当尝试使用以下 要求运行代码时:

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 系统上运行此代码。

91844 次浏览

This happens because Jinja has removed those functions in a recent version — 3.1.0 — released on March 24th, 2022.

Markup and escape should be imported from MarkupSafe.

You have two options form here:

  1. either this error comes from one of your dependency.
    The first thing you should consider is to upgrade the said dependence(s).
    If this is not possible, what you can do, from here is to downgrade your Jinja version to a version that would still include escape, for example, adding it explicitly in your requirements.txt:

    jinja2<3.1.0
    
  2. or, your error is from code you wrote, so you can fix it by importing it from MarkupSafe, as suggested in the Jinja release notes.

    So, you should use

    from markupsafe import escape
    

    instead of

    from jinja2 import escape
    

Jinja is a dependency of Flask and Flask V1.X.X uses the escape module from Jinja, however recently support for the escape module was dropped in newer versions of Jinja.

To fix this issue, simply update to the newer version of Flask V2.X.X in your requirements.txt where Flask no longer uses the escape module from Jinja.

Flask==2.1.0

Also, do note that Flask V1.X.X is no longer supported by the team. If you want to continue to use this older version, this Github issue may help.

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

This happened to me using Voila with jupyter notebook and solved using method below:

  1. going to this directory C:\Users\admin\anaconda3\Lib\site-packages\nbconvert\filters\ansi.py
  2. adding this line to the first of file from markupsafe import escape
  3. Also change this line of code text = jinja2.utils.escape(text) to text = escape(text)

So what happened to me is that I cloned a repo on github and installed flask with my virtualenv activated using the command pip install -r requirements.txt but when I tried to run the server thats when it have me the error:

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

So what I did is ran the command pip uninstall flask and reinstalled it by running pip install flask and then ran my server again, then it worked.

SIMPLE SOLUTION

pip uninstall flask

then

pip install flask

Simply update your Flask version, it works for me

Flask==2.1.0