ImportError: cannot import name 'X' from partially initialized module
Pythonで循環インポートが発生した場合のエラー
概要
ImportError: cannot import name 'X' from partially initialized module は、Pythonで2つ以上のモジュールが互いにインポートし合う循環インポートが発生した場合に発生するエラーです。
エラーメッセージ
ImportError: cannot import name 'function_b' from partially initialized module 'module_b' (most likely due to a circular import)
ImportError: cannot import name 'ClassA' from 'module_a'
原因
循環インポートの例
| |
| |
解決策
1. インポートを関数内に移動
| |
2. モジュール全体をインポート
| |
3. 共通モジュールに切り出し
| |
4. TYPE_CHECKINGで型ヒント用インポート
| |
5. 構造を見直す
# Before: 循環依存
module_a <-> module_b
# After: 依存関係を整理
common
↑ ↑
module_a module_b
6. importlibで動的インポート
| |
7. init.pyでの注意
| |
循環インポートの検出
| |
設計パターン
| |
関連エラー
関連エラー
Python の他のエラー
この記事は役に立ちましたか?