导入错误:无法从“werkzeug.urls”导入名称“url_quote”

问题描述 投票:0回答:1

环境:

Python 3.10.11
Flask==2.2.2

我在 docker 容器中使用 BASE Image 运行 Flask 后端代码:

FROM pytorch/pytorch:2.0.1-cuda11.7-cudnn8-runtime

但是当我使用版本

pytest 7.4.2
运行 pytest 时,

pip install pytest
pytest

它引发了一个错误,日志如下:

==================================== ERRORS ====================================
_____________ ERROR collecting tests/test_fiftyone_utils_utils.py ______________
ImportError while importing test module '/builds/kw/data-auto-analysis-toolkit-backend/tests/test_fiftyone_utils_utils.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/opt/conda/lib/python3.10/importlib/__init__.py:126: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
tests/test_fiftyone_utils_utils.py:2: in <module>
    import daat  # noqa: F401
/opt/conda/lib/python3.10/site-packages/daat-1.0.0-py3.10.egg/daat/__init__.py:1: in <module>
    from daat.app import app
/opt/conda/lib/python3.10/site-packages/daat-1.0.0-py3.10.egg/daat/app/__init__.py:6: in <module>
    from flask import Flask, jsonify, request
/opt/conda/lib/python3.10/site-packages/flask/__init__.py:5: in <module>
    from .app import Flask as Flask
/opt/conda/lib/python3.10/site-packages/flask/app.py:30: in <module>
    from werkzeug.urls import url_quote
E   ImportError: cannot import name 'url_quote' from 'werkzeug.urls' (/opt/conda/lib/python3.10/site-packages/werkzeug/urls.py)

当我直接使用

python run.py

运行时,我的代码运行良好

run.py
如下所示

from daat import app

app.run(host='0.0.0.0')

我想这应该是 pytest 版本问题,因为它曾经在不更改任何相关代码的情况下运行良好,并且我使用

pip install pytest
没有定义特定版本。

我的后端在没有 pytest 的情况下运行良好。

python flask pytest werkzeug
1个回答
0
投票

我也有同样的问题。这是因为werkzeug 3.0.0发布后,Flask没有正确指定依赖关系。这就是为什么仍然安装了 werkzeug 3.0.0 并且 Flask 2.2.2 不是为 werkzeug 3.0.0 制作的。

解决方案:只需在您的requirements.txt中为werkzeug设置一个修复版本,例如

werkzeug==2.2
,它就应该可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.