1. ホーム
  2. python

[解決済み] Pythonにおける循環的なインポート依存性

2023-04-19 11:48:22

質問

以下のようなディレクトリ構造になっているとします。

a\
    __init__.py
    b\
        __init__.py
        c\
            __init__.py
            c_file.py
        d\
            __init__.py
            d_file.py

の中で a パッケージの __init__.py を使用することで c パッケージがインポートされます。しかし c_file.py はインポートされます。 a.b.d .

プログラムは次のように失敗します。 b が存在しないのに c_file.py をインポートしようとすると a.b.d . (そしてそれは本当に存在しません。なぜなら私たちはそれをインポートしている最中だったからです)。

この問題はどうすれば改善されるのでしょうか?

どのように解決するのですか?

aがcに依存し、cがaに依存する場合、それらは実は同じ単位ではないのでしょうか?

なぜ a と c をふたつのパッケージに分けたのかをよく調べてみてください。なぜなら、別のパッケージに分割すべきコードがあるか (両方を新しいパッケージに依存させ、お互いに依存しないようにするため)、あるいはそれらをひとつのパッケージに統合すべきかのどちらかだからです。