flaskで ImportError was raised. が消えない

flaskで ImportError was raisedが消えない Python

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

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