10
4

Flaskでurl_quoteが見つからなくなった問題

Last updated at Posted at 2023-10-19

Flaskを使ってAPIサーバーを書いていたら、開発環境を更新したタイミングでサーバー起動時にurl_quoteが見つからないというエラーが出るようになってしまった。

Traceback (most recent call last):                                                                                                                                                
  File "/usr/local/bin/flask", line 5, in <module>                                                                                                                                
    from flask.cli import main
  File "/usr/local/lib/python3.9/site-packages/flask/__init__.py", line 5, in <module>
    from .app import Flask as Flask
  File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 30, in <module>
    from werkzeug.urls import url_quote
ImportError: cannot import name 'url_quote' from 'werkzeug.urls' (/usr/local/lib/python3.9/site-packages/werkzeug/urls.py)

原因

Werkzeugのアップデートによるurl_quoteの廃止

2023年9月30日に、Flaskが参照しているWerkzeugというライブラリのメジャーアップデートがあり3.0.0がリリースされた。

Werkzeug 3.0.0でurl_quoteが廃止されたが、Flaskの古いバージョンはこのメソッドを参照している。

Flask側でのWerkzeugのバージョン指定の問題

古いバージョンのFlaskではWerkzeugのバージョンが細かく指定されていなかったため、破壊的変更を含むWerkzeug 3.0.0 がリリースされたタイミング以降にDependencyを解決しようとすると、Werkzeug 3.0.0がインストールされるような形になってしまった。

"Werkzeug >= 2.2.2",

回避方法

Flaskのバージョンを上げる

Flask 2.3.3以降では、使用するWerkzergのバージョンが明示的に指定されているため問題が起きない。なので、使用するFlaskを2.3.3以降のバージョンにバージョンアップする。

Flask==2.3.3

Werkzeugのバージョンを明示的に指定する

なんらかの理由でFlaskのバージョンアップができない場合は、requirements.txtなどでWerkzeug 2.x系を使用するように明示的に指定する。

Werkzeug==2.3.7
10
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
4