0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【エラー】`ImportError`→Flaskに関する問題

Posted at

はじめに

こちらの記事は「Docker&仮想サーバー(2022年初版)」という書籍で学習中に発生したエラーと解決方法についてまとめています。

環境

Mac
VsCodeを利用
Docker Desktopを利用
書籍のDLコンテンツからサンプルプログラムを利用
「Chapter4-11:Flaskコンテナを構築する」でエラー発生

compose.yamlのコード

# compose.yamlファイル
services:
  web:  # コンテナ名
    build: .  # 「.」よりカレントフォルダにあるDockerfileを使ってイメージが作成される
    environment:
      FLASK_ENV: development  # 環境変数。Flaskでプログラムを即時反映させる為
    ports:
      - "5000:5000"  # ポート番号。Flaskのデフォルトポート番号
    volumes:
      - ./src:/usr/src/app  # ボリューム

エラー発生までの流れ

対象パスchap4/flaskに移動後
docker compose up -dを実行。
ここがうまくいかなかった。止まってしまう。

% docker compose logs webで確認

こちらのコマンドの意味は下記になります。
docker-compose.yml に定義されている web サービス(Flask アプリなど) の ログを表示する

⚠️ImportError: cannot import name 'url_quote' from 'werkzeug.urls'

Flask 2.3 系では、内部的に werkzeug.urls.url_quote を使っているのに、それが 新しい Werkzeug では削除されてしまったため、Flask が壊れている状態。

だそうです。
以下記事も参考にさせていただきました。ありがとうございます

✅解決

Dockerfileでダウングレード

RUN pip install flask==2.2.5 werkzeug==2.2.3

この後ターミナルで以下コマンドを実行

# イメージがまだ古いまま使われている可能性が高いので以下手順で再度実行
docker compose down --rmi all --volumes --remove-orphans # 完全に古いイメージ削除
docker compose build --no-cache # 再ビルド強制的に
docker compose up -d # コンテナ起動
docker compose logs web # 一応ログ確認

 

おまけ:ログ確認のコマンド実行の際、正常に動作している場合の出力結果

web  |  * Serving Flask app 'app.py'  # Flask が app.py を実行している
web  |  * Debug mode: on  # デバッグモード有効(コード変更が即反映)
web  |  WARNING: This is a development server. Do not use it in a production deployment.
web  |  * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)  # このURLでアプリが起動中(アクセスOK)
web  |  * Restarting with stat
web  |  * Debugger is active!  # デバッガが動いている(エラー調査に便利)
web  |  * Debugger PIN: 123-456-789

さらについでに、もしこの後ブラウザにアクセスしたり、フォーム送信をしたりすると、その履歴がログに追加されます

web  | 127.0.0.1 - - [06/Jul/2025 16:21:01] "GET / HTTP/1.1" 200 -

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?