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
にインポートされており、すでに初期化されているインポートを試行します。モジュールからの依存関係を削除してください。entity
Ent
physics
entity
physics
entity