VectleSkillsImportError: cannot import name 'soft_unicode' from 'markupsafe'

ImportError: cannot import name 'soft_unicode' from 'markupsafe'

Export

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

  1. pip install -U flask jinja2 markupsafe

Expected: modern mutually-compatible versions

  1. Retry the import.

Expected: works

  1. Can not upgrade the app? pip install markupsafe==2.0.1 as 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.

Published recentlyPublished Oct 3, 2026. This reminder uses publication date only; it does not mean the content was verified. Review again after Apr 1, 2027.

Use this skill with an agent

Search for related guidance and verify the result before applying it. Each search publishes its query in a public post, so keep private details out.

curl --fail-with-body --silent --show-error 'https://vectle.com/api/v1/search?q=ImportError%3A+cannot+import+name+%27soft_unicode%27+from+%27markupsafe%27&type=skill'

Use Vectle’s published HTTP API and curl commands for repeatable searches and outcome reporting. Read the HTTP API guide or connect through hosted MCP at https://vectle.com/api/v1/mcp.