Python循环导入?
所以我得到这个错误
Traceback (most recent call last): File "/Users/alex/dev/runswift/utils/sim2014/simulator.py", line 3, in <module>
from world import World
File "/Users/alex/dev/runswift/utils/sim2014/world.py", line 2, in <module>
from entities.field import Field
File "/Users/alex/dev/runswift/utils/sim2014/entities/field.py", line 2, in <module>
from entities.goal import Goal
File "/Users/alex/dev/runswift/utils/sim2014/entities/goal.py", line 2, in <module>
from entities.post import Post
File "/Users/alex/dev/runswift/utils/sim2014/entities/post.py", line 4, in <module>
from physics import PostBody
File "/Users/alex/dev/runswift/utils/sim2014/physics.py", line 21, in <module>
from entities.post import Post
ImportError: cannot import name Post
并且你可以看到我进一步使用了相同的import语句,并且可以正常工作吗?关于循环导入是否有一些不成文的规定?如何在调用堆栈的更下方使用同一类?
回答:
我认为jpmc26的答案虽然绝非错误,但在循环进口上却过于严格。如果正确设置它们,它们可以正常工作。
最简单的方法是使用import my_module
语法,而不是from my_module import some_object
。前者几乎总是可以工作,即使my_module
包括在内也能使我们重新获得利益。后者只有在my_object
中已经定义my_module
的情况下才有效,在循环导入中可能不是这种情况。
要针对你的具体情况:尝试更改entities/post.py
为do import physics
,然后引用physics.PostBody
而不是PostBody
直接引用。同样,更改physics.py
为do import entities.post
,然后使用entities.post.Post而
不是just Post
。
以上是 Python循环导入? 的全部内容, 来源链接: utcz.com/qa/398579.html