Python Fix ImportError: cannot import name Markup from jinja2

Posted on Jan 23, 2023


Python error ImportError: cannot import name Markup from jinja2 occurs when you import the Markup class on the latest jinja2 module version.

This is because Jinja2 has refactored and moved the Markup class to the MarkUpSafe module when version 3.10.0 was released.

Solving ImportError: cannot import name Markup from jinja2

On Jinja2 previous versions, you can import the Markup class as shown below:

from jinja2 import Markup

But after version 3.10.0, the import statement above will cause the following error:

Traceback (most recent call last):
  File ...
    from jinja2 import Markup
ImportError: cannot import name 'Markup' from 'jinja2'

To fix this error, you need to redirect the import from jinja2 to markupsafe like this:

from markupsafe import Markup

With that, you should be able to use the Markup class in your code.

Alternatively, you can also downgrade your jinja2 version to 3.0.3, which is the latest jinja2 version that supports importing the Markup class.

Use one of the following pip commands to downgrade your jinja2 module:

pip install jinja2==3.0.3 --force-reinstall

# for pip3:
pip3 install jinja2==3.0.3 --force-reinstall

With that, importing Markup from jinja2 will not produce an error.

Handling Markup error in Flask

The Flask framework for Python relies on Jinja2 for its template engine.

You may see the same error when you run a Flask application. To fix it, you need to upgrade your Flask application to the latest version:

pip install flask --upgrade

#or
pip3 install flask --upgrade

Once you upgraded the Flask module, the application should be able to run without encountering this error.

Conclusion

Python shows ImportError: cannot import name Markup from jinja2 when you try to import the Markup class from jinja2 module.

To fix this error, you need to import the Markup class from markupsafe module.

Hope this tutorial helps. Cheers! 🍻

Level up your programming skills

I'm sending out an occasional email with the latest programming tutorials. Drop your email in the box below and I'll send new stuff straight into your inbox!

No spam. Unsubscribe anytime.