Python __future_uuuuu导入注释不解析类型提示的循环导入

Python __future_uuuuu导入注释不解析类型提示的循环导入,python,circular-dependency,Python,Circular Dependency,在我的代码中,我在不同的模块中有两个类,它们彼此需要用于类型暗示。由于这是一个循环导入问题,我在每个模块文件的顶部使用了来自未来导入注释的,但这并没有解决我的问题。我还是会 Traceback (most recent call last): File "C:\...\bil\Aircraft.py", line 10, in <module> from bil.Crew import Seat File "C:\...\bil\Crew.py", line 9, i

在我的代码中,我在不同的模块中有两个类,它们彼此需要用于类型暗示。由于这是一个循环导入问题,我在每个模块文件的顶部使用了来自未来导入注释的
,但这并没有解决我的问题。我还是会

Traceback (most recent call last):
  File "C:\...\bil\Aircraft.py", line 10, in <module>
    from bil.Crew import Seat
  File "C:\...\bil\Crew.py", line 9, in <module>
    from bil.Aircraft import Aircraft
  File "C:\...\bil\Aircraft.py", line 10, in <module>
    from bil.Crew import Seat
ImportError: cannot import name 'Seat' from 'bil.Crew' (C:\...\bil\Crew.py)
Crew.py

from __future__ import annotations
from bil.Aircraft import Aircraft

@dataclass
class Seat:
    ... (nothing linked to Aircraft)

@dataclass
class Category:
    ...
    aircraft: Aircraft
作为最后手段,我在每个项目文件中添加了来自未来导入注释的
,但我仍然会遇到这个错误。如果我删除这个特定的循环依赖项,就会出现其他依赖项。
我的python版本是3.7.6。

有人知道我做错了什么,以及我如何修复它吗?

导入不是注释。如果
Aircraft
除注释外未在任何地方使用,则无需导入该注释。如果
Aircraft.py
Crew.py
之间存在圆形深度,这是您需要独立于类型暗示来解决的问题。
从键入import type\u CHECKING开始,然后在稍后的导入代码中:
if type\u CHECKING:
并将导入置于该if条件下。然后应该解析。导入不是注释。如果
Aircraft
除注释外未在任何地方使用,则无需导入该注释。如果
Aircraft.py
Crew.py
之间存在圆形深度,这是您需要独立于类型暗示来解决的问题。
从键入import type\u CHECKING开始,然后在稍后的导入代码中:
if type\u CHECKING:
并将导入置于该if条件下。然后就应该解决了。
from __future__ import annotations
from bil.Aircraft import Aircraft

@dataclass
class Seat:
    ... (nothing linked to Aircraft)

@dataclass
class Category:
    ...
    aircraft: Aircraft