导入错误:无法从“werkzeug.security”导入名称“safe_str_cmp”

新手上路,请多包涵

关于为什么我会收到此错误的任何想法?

我的项目运行良好。我将它复制到外部驱动器和我的笔记本电脑上,以便在路上工作;它工作正常。我将它复制回我的桌面并遇到大量无效解释器等问题,所以我创建了一个新项目并只复制了脚本,创建了一个新的 requirements.txt 并安装了所有包,但是当我运行它时,我得到这个错误:

 Traceback (most recent call last):
  File "E:\Dev\spot_new\flask_blog\run.py", line 1, in <module>
    from flaskblog import app
  File "E:\Dev\spot_new\flask_blog\flaskblog__init__.py", line 3, in <module>
    from flask_bcrypt import Bcrypt
  File "E:\Dev\spot_new\venv\lib\site-packages\flask_bcrypt.py", line 21, in <module>
    from werkzeug.security import safe_str_cmp
ImportError: cannot import name 'safe_str_cmp' from 'werkzeug.security' (E:\Dev\spot_new\venv\lib\site-packages\werkzeug\security.py)

我试过卸载 Python、Anaconda、PyCharm,删除我能找到的每一个 reg 键和环境变量,看起来像 pythonic,从头开始重新安装但仍然没有骰子。

原文由 prosody 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.2k
2 个回答

Werkzeug 今天发布了 v2.1.0 ,删除了 werkzeug.security.safe_str_cmp

您可以通过在 requirements.txt 文件(或类似文件)中固定 Werkzeug~=2.0.0 来解决此问题。

 pip install Werkzeug~=2.0.0

在那之后你很可能还会有一个与 jinja 包相关的 AttributeError,所以如果你有它,也运行:

 pip install jinja2~=3.0.3

原文由 Oliver Tonnesen 发布,翻译遵循 CC BY-SA 4.0 许可协议

这个问题也可以通过升级 flask_login 来解决。

 pip install --upgrade flask_login

原文由 Fabian 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题