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