Pythonでflask_loginを使っているアプリで、下記のエラーが発生した。
ImportError: cannot import name 'url_decode' from 'werkzeug.urls'
werkzeug.urlsなんてimportしてないのになんで??と思ったら、どうもflask_loginで呼ばれているようだった。
そして、werkzeug.urlsがv3.0以降でurl_decodeがなくなっているのに、まだflask側での対応がされていないため、このエラーが発生するとのことだった。
そこで以下のようにpyproject.tomlで、werkzeugのバージョンを2の最終の2.3に固定して、flaskを2.3以降にすることで対応できた。
"Werkzeug==2.3.7", "flask>=2.3.3", "flask-login>=0.6.2",
ただし、すでにwerkzeugが3が入っているとだめなので、一旦Werkzeugやflaskを外してsyncして、再度上記の依存を記述してsyncすることで対応できた。
最終的に入ったバージョンは以下の通り。
Flask==2.3.3 Flask-Login==0.6.3 Werkzeug==2.3.7