環境:
Python 3.10.11
Flask==2.2.2
BASE イメージを使用して、Docker コンテナで Flask バックエンド コードを実行します。FROM pytorch/pytorch:2.0.1-cuda11.7-cudnn8-runtime
しかし、バージョンでpytestを実行するとpytest 7.4.2
、
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')
pip install pytest
関連するコードを変更しなくても以前は正常に動作していたため、特定のバージョンを定義せずに使用しているため、pytest バージョンの問題であると思われます。
そして、私のバックエンドは pytest なしでも正常に動作します。
ベストアンサー1
私も同じ問題を抱えていました。Werkzeug 3.0.0
がリリースされ、Flask が依存関係を正しく指定していないためです (要件では となっていますWerkzeug>=2.2.0
)。 このため、Werkzeug 3.0.0
はまだインストールされており、Flask 2.2.2
向けに作成されていませんWerkzeug 3.0.0
。
解決: Werkzeug の修正バージョンを設定するだけでWerkzeug==2.2.2
動作requirements.txt
するはずです。