Flask==3.0.xでFlask-DebugToolbarを動かそうとしたら動作しない。
TraceBack
1 2 3 4 5 6 7 8 9 |
Traceback (most recent call last): File "{path/to/venv}/venv/lib/python3.12/site-packages/flask/cli.py", line 219, in locate_app __import__(module_name) File "{path/to/venv}/app.py", line 13, in <module> from flask_debugtoolbar import DebugToolbarExtension File "{path/to/venv}/venv/lib/python3.12/site-packages/flask_debugtoolbar/__init__.py", line 5, in <module> from flask.globals import _request_ctx_stack ImportError: cannot import name '_request_ctx_stack' from 'flask.globals' (/{path/to/venv}/venv/lib/python3.12/site-packages/flask/globals.py) |
原因は、Flask==3.0.xで削除された関数を、Flask-DebugToolbarが使用していること。
そのうち修正されると思うので、とりあえず暫定対策として、Flask==2.3.3を使用すると良い。
Flaskはバージョン指定してインストールしても、そのバージョンに必要ならライブラリをインストールしてくれないので、werkzeugのバージョンが新し過ぎてエラーになる。
そのため、以下の様な手順でインストールすると良い。
- venvを新しく作り直す
- Flaskをversion 2.3.3を指定してインストールする(pip install Flask==2.3.3)
- 2.3.3を指定してインストールすると、Werkzeug==3.0.1がインストールされ、動いてくれないので、一旦Werkzeugをアンインストールする(pip uninstall werkzeug)
- Flask==2.3.3で動作するwerkzeugをインストールする(pip install werkzeug==2.3.7)
- Flask-DebugToolbarをインストールする( pip install flask-debugtoolbar)