Importerror: Cannot Import Name 'Escape' from 'Jinja2'
I Am Getting the Error Importerror: Cannot Import Name 'Escape' from 'Jinja2' When Trying to Run Code Using the Following Requirements. Txt...
I am getting the error
ImportError: cannot import name 'escape' from 'jinja2'
When trying to run code using the following 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
Tried
pip install jinja2
But the requirement is already satisfied.
Running this code on a windows system.
3 Answers
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.
This happens because Jinja has removed those functions in a recent version — 3.1.0 — released on March 24th, 2022.
Markupandescapeshould be imported from MarkupSafe.
You have two options form here:
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 includeescape, for example, adding it explicitly in your requirements.txt:jinja2<3.1.0or, 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 escapeinstead of
from jinja2 import escape
ImportError: cannot import name 'escape' from 'jinja2'
This happened to me using Voila with jupyter notebook and solved using method below:
- going to this directory
C:\Users\admin\anaconda3\Lib\site-packages\nbconvert\filters\ansi.py - adding this line to the first of file
from markupsafe import escape - Also change this line of code
text = jinja2.utils.escape(text)totext = escape(text)