PythonWebアプリプログラミング

【Flask】なぜかデプロイが出来なくなった件と解決方法【ImportError】

FLaskのデプロイ時のエラー解決方法紹介記事のアイキャッチ画像 Python

Flaskを使用したアプリをDockerコンテナ上でデプロイしようとしたら出来なくなっていて苦労したのでその記録。ログにはImportErrorとなっていました。

スポンサーリンク

Flaskデプロイ時に発生したエラー

過去に自分で作成したプロジェクトを流用してFlaskのアプリをDockerコンテナ上にデプロイしようとしたらできなくなっていました
いわゆる「何もしてないのに壊れた」状態。。。

ログファイルには以下のようなエラーが記載されてました。

ImportError: cannot import name ‘url_quote’ from ‘werkzeug.urls’

直訳すると「‘werkzeug.urls’から’url_quote’をインポートできません」といった感じ。

一応それぞれについて調べたのでそれを以下に。

Werkzeug:シンプルなWSGIユーティリティライブラリ。WSGI準拠のアプリ開発をするために使用されるツールセットで、ウェブアプリケーションの様々な役割をサポートするもの。
url_quote:URLやURIの一部として特殊文字やスペースなどをエンコードする役割を持つ。

とにかく上記がインストールできないというエラーのようだが、どうやらWerzeugはFlaskに内包されているようです。

で、色々調べるとFlaskが新しくなったWerkzeug(ver3.0.0)に対応できていないからだそうです。

ImportError: cannot import name 'url_quote' from 'werkzeug.urls'
Environment: Python 3.10.11 Flask==2.2.2 I run my Flask backend code in docker container, with BASE Image: FROM pytorch/pytorch:2.0.1-cuda11.7-cudnn8-runtime B...
スポンサーリンク

解決方法

バージョンを管理することで解決できました。
つまり正常に動作する古いバージョンを指定しました。

私は以下バージョンで実施し、正常に動作させることができました。

flask==2.2.2
Werkzeug==2.3.7

Flask側が対応するまでは意識的に管理する必要がありそうですね。

スポンサーリンク

さいごに

上手くデプロイが出来ない原因が中々分からず時間がかかってしまいました。
やはりログを確認するのは大事ですね。

コメント

タイトルとURLをコピーしました