pythonの軽量フレームワークであるflaskで開発をしていたところ、ある時急にアプリが起動しなくなってしまいました。
コンソールには以下のメッセージが出るだけです。もう少し詳細にエラーの内容を教えてほしいですね。
1 | Error: While importing 'app' , an ImportError was raised. |
appというのは私のアプリの名前です。
ImportErrorというからには、おそらくインポート関係の問題だと思い、各ファイルでimport漏れが無いか確認しましたが、発見できませんでした。
これはimportの循環エラー、無限ループが起きているのではないかと思ったところ、ビンゴでした。
Pythonでは、2つのモジュール(ファイル)でお互いにimportしあう形になっているとImportErrorになるようです。私の場合、modelとapiを同じモジュールに別クラスとして定義し、それを他のモジュールからもインポートするようになっていたのが問題でした。
hoge.py
1 2 3 4 5 6 7 8 9 | from fuga import FugaModel class HogeModel: def hoge_model - > str ... class HogeApi: def hoge_api - > FugaModel ... |
fuga.py
1 2 3 4 5 6 7 8 9 | from hoge import HogeModel class FugaModel: def fuga_model - > str ... class FugaApi: def fuga_api - > HogeModel ... |
modelとapiを別モジュール(ファイル)に分けたところ無事起動するようになりました。
hoge_model.py
1 2 3 | class HogeModel: def hoge_model - > str ... |
hoge_api.py
1 2 3 4 | from fuga_model import FugaModel class HogeApi: def hoge_api - > FugaModel |
fuga_model.py
1 2 3 | class FugaModel: def fuga_model - > str ... |
fuga_api.py
1 2 3 4 5 | from hoge_model import HogeModel class FugaApi: def fuga_api - > HogeModel ... |