「ImportError: 名前 X をインポートできません」または「AttributeError: ... (おそらく循環インポートが原因)」についてはどうすればよいですか? 質問する

「ImportError: 名前 X をインポートできません」または「AttributeError: ... (おそらく循環インポートが原因)」についてはどうすればよいですか? 質問する

import次のように、複数のファイルにまたがって相互にアクセスを試みるコードがあります。

main.py:

from entity import Ent

エンティティ.py:

from physics import Physics
class Ent:
    ...

物理.py:

from entity import Ent
class Physics:
    ...

その後、実行するmain.pyと次のエラーが発生します。

Traceback (most recent call last):
File "main.py", line 2, in <module>
    from entity import Ent
File ".../entity.py", line 5, in <module>
    from physics import Physics
File ".../physics.py", line 2, in <module>
    from entity import Ent
ImportError: cannot import name Ent

entityこのエラーは、一度目でmain.py、後で目でと、 2 度インポートしたことが原因だと思いますphysics.pyが、どうすれば問題を回避できるでしょうか?


参照Python で相互インポートまたは循環インポートを使用すると何が起こりますか?循環輸入に関して何が許され、何が問題となるかについての一般的な概要については、循環インポートはコールスタックの上のほうでは機能しているように見えるのに、下のほうでは ImportError を発生させるのはなぜでしょうか?問題が発生する理由と仕組みに関する技術的な詳細については、

ベストアンサー1

循環依存インポートがあります。はクラスが定義される前physics.pyにインポートされており、すでに初期化されているインポートを試行します。モジュールからの依存関係を削除してください。entityEntphysicsentityphysicsentity

おすすめ記事