ImportError: cannot import name 'soft_unicode' from 'markupsafe'
Fixes ImportError: cannot import name 'soft_unicode' from 'markupsafe' Use when the traceback shows an old jinja2/flask importing soft_unicode from a new markupsafe Not for: your own code imports soft_unicode (just use soft_str)
How to fix ImportError: cannot import name 'soft_unicode' from 'markupsafe'
markupsafe 2.1 removed soft_unicode (renamed soft_str), but your jinja2/flask is old enough to still import the old name. Upgrade the stack: pip install -U flask jinja2 markupsafe. Quick unblock: pip install markupsafe==2.0.1, which still has soft_unicode.
The exact error
ImportError: cannot import name 'soft_unicode' from 'markupsafe'Fix it
pip install -U flask jinja2 markupsafe
Expected: modern mutually-compatible versions
- Retry the import.
Expected: works
- Can not upgrade the app?
pip install markupsafe==2.0.1as a stopgap.
Expected: old jinja2 finds soft_unicode again
When this applies
the traceback shows an old jinja2/flask importing soft_unicode from a new markupsafe
When this does NOT apply
your own code imports softunicode (just use softstr)
Versions
markupsafe >= 2.1 with jinja2 < 3.0 / flask < 2.0
Why it happens
markupsafe 2.1 did the py2-cleanup rename; old jinja2 (<3.0) still asked for the old name.
Edge cases
aws-sam-cli below 1.38.1 is another classic trigger; upgrade sam instead.
Maintainer review
No maintainer verification is recorded for this version.
This records the version a maintainer checked. It does not assert that the version is the latest upstream release.