无法从“markupsafe”导入名称“soft_unicode”[已解决]

无法从“markupsafe”导入名称“soft_unicode” [已解决]

Cannot import name ‘soft_unicode’ from ‘markupsafe’ [Solved]

出现“ImportError: cannot import name ‘soft_unicode’ from ‘markupsafe’”是因为该方法在2.1.0 版soft_unicode中已被弃用。markupsafe

要解决该错误,请运行pip install markupsafe==2.0.1命令安装markupsafe支持的最新版本soft_unicode

导入错误无法导入名称软 unicode

ImportError: cannot import name 'soft_unicode' from 'markupsafe' (/home/borislav/Desktop/bobbyhadz_python/venv/lib/python3.11/site-packages/markupsafe/__init__.py)


文档的更改部分
显示
方法已被弃用并从 version 开始
删除markupsafesoft_unicode2.1.0

软 unicode 已被弃用

固定markupsafe到版本2.0.1

您应该尝试的第一件事是安装markupsafe2.0.1版本

pip install markupsafe==2.0.1 pip3 install markupsafe==2.0.1 # 👇️ if you don't have pip in PATH environment variable python -m pip install markupsafe==2.0.1 python3 -m pip install markupsafe==2.0.1 # 👇️ py alias (Windows) py -m pip install markupsafe==2.0.1 # 👇️ for Jupyter Notebook !pip install markupsafe==2.0.1

安装 markupsafe 2 0 1

运行该命令时,您可能会收到一条错误消息,指出“错误:pip 的依赖项解析器当前未考虑所有已安装的包。” .

但是,即使显示错误,软件包2.0.1的版本也已成功安装。 markupsafe

如果您有
requirements.txt文件,则可以添加以下行。

要求.txt
markupsafe==2.0.1

运行pip install带有--force-reinstall选项的命令

您也可以尝试在安装版本时pip install使用
–force-reinstall选项运行命令2.0.1

pip install markupsafe==2.0.1 --force-reinstall pip3 install markupsafe==2.0.1 --force-reinstall # 👇️ if you don't have pip in PATH environment variable python -m pip install markupsafe==2.0.1 --force-reinstall python3 -m pip install markupsafe==2.0.1 --force-reinstall py -m pip install markupsafe==2.0.1 --force-reinstall # 👇️ for Jupyter Notebook !pip install markupsafe==2.0.1 --force-reinstall

强制重新安装标记安全

解决使用 AWS SAM CLI 时的错误

如果您在使用AWS SAM CLI时遇到错误,则必须升级您的 SAM CLI 版本,因为 SAM CLI v1.38 中修复了一个问题。

主程序
pip install --user --upgrade aws-sam-cli pip3 install --user --upgrade aws-sam-cli python -m pip install --user --upgrade aws-sam-cli python3 -m pip install --user --upgrade aws-sam-cli # 👇️ py alias (Windows) py -m pip install --user --upgrade aws-sam-cli

请注意,建议使用
文档中的官方操作系统特定安装程序安装 AWS SAM CLI 。

如果您使用 GitHub 操作,则可以明确指定版本。

工作流.yml
- uses: aws-actions/setup-sam@v1 with: version: 1.37.0

使用 pip 不是安装 SAM CLI 的推荐方法,因为它通常会导致问题。

重新安装markupsafe模块

如果错误没有解决,尝试先卸载markupsafe再安装版本2.0.1

pip uninstall markupsafe pip3 uninstall markupsafe pip install markupsafe==2.0.1 pip3 install markupsafe==2.0.1

您可以使用该pip show markupsafe命令检查安装了哪个版本的软件包。

pip show markupsafe pip3 show markupsafe python -m pip show markupsafe python3 -m pip show markupsafe

验证标记安全版本

如果2.0.1安装了 version,则错误应该已解决。

如果您使用 Docker 或 Github 操作,则必须将包固定配置文件中的版本。 markupsafe2.0.1
文件
args: AIRFLOW_DEPS: gcp_api,s3 PYTHON_DEPS: MarkupSafe==2.0.1

如果使用 Flask 和 Jinja2,请重新安装它们

如果错误仍然存​​在并且您在使用
Flask
Jinja2时得到它,请尝试卸载它们并安装最新版本。

pip uninstall Flask Jinja2 pip uninstall Flask Jinja2 pip install Flask Jinja2 --upgrade pip3 install Flask Jinja2 --upgrade

升级烧瓶和神社

删除该soft_unicode方法后,它被替换为soft_str.

改用markupsafe.soft_str方法

如果您在自己的代码中调用该方法,则可以改用该
markupsafe.soft_str()方法。

主程序
from markupsafe import escape, soft_str value = escape('<example>') print(escape(str(value))) # 👉️ &amp;lt;example&amp;gt; print(escape(soft_str(value))) # 👉️ &lt;example&gt;

改为使用软 str 方法

markupsafe.soft_str()方法将对象转换为字符串,保留字符串
Markup,而不是将其转换回基本字符串。

该字符串被标记为安全并且不会再次转义。

如果您宁愿使用该soft_str方法而不是soft_unicode,您可以将markupsafe包升级到最新版本。

pip install markupsafe --upgrade pip3 install markupsafe --upgrade # 👇️ if you don't have pip in PATH environment variable python -m pip install markupsafe --upgrade python3 -m pip install markupsafe --upgrade # 👇️ py alias (Windows) py -m pip install markupsafe --upgrade # 👇️ for Jupyter Notebook !pip install markupsafe --upgrade