単体テスト モードで Flask アプリを実行すると問題が発生します。何らかの理由で、同じモジュールが 2 回インポートされます (開発サーバーとして実行する場合、フラスコ アプリでは問題ではないようです)。構造は次のようになります。
-- app
|
--blueprint
|-- __init__.py : import foo; from .bar import aaa
|-- foo.py : # some sqlalchemy model setup, etc
|
|-- bar
| | -- __init__.py : from bar import bbb
| -- bar.py : from app.foo import ccc
問題は、bar.py
関数を使用しfoo.py:ccc
て sqlalchemy モデル定義を 2 回実行することです (メタデータに既にモデルが登録されているため、これは失敗します)。この競合をどのように回避できますか? 単体テストとしてではなくフラスコアプリケーションを実行すると、なぜこれが起こらないのかについても驚いています。