在python中导入冲突?

Import conflict in Python?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Python: Circular (or cyclic) imports

我对python还不熟悉,我有一个问题,但我不确定这是否是我的问题。我有两个文件,user.py和comments.py。在user.py中,我知道

1
from comments import Comment

在评论中,是的。

1
from user import User

我的用户加载得很好,但是当我加载导致注释的URL时,会得到一个服务器错误。评论from comments import Comment解决了这个问题。我做错什么了吗?


这种循环导入不起作用。导入模块实质上意味着执行其中的语句。import语句在遇到时执行,因此在至少一个模块中,另一个模块尚未初始化,因此导入将失败。

循环依赖项被视为反模式。有些情况下,它们以某种方式自然发生,但一般来说,它们是坏设计的标志。

您可以通过将其中一条导入语句移动到模块末尾或函数级别来实现这一点,但我建议不要使用这些"修复程序"。


是的,您有一个循环导入,这会导致许多问题。如果您考虑导入时实际发生的情况,这类似于说,"将代码从文件x复制到这个文件中",但是如果您从x复制到y,然后从y复制到x,那么您已经创建了一个无限循环,在这个循环中,解释程序很难确定应该替换哪个模块,或者加载哪个模块,在这个模块中暗示。但是,如果您的程序架构正确,则不应该有任何。你为什么要循环进口?如果我们更仔细地研究这个问题,很可能你根本不需要它。