背景资料
实际问题
我们在服务器上遇到了一个循环导入问题,在任何测试期间都没有捕获。
执行一个简单的循环导入示例显示循环导入确实在本地发生错误。
我们在导入时在每个文件的顶部粘贴了一些打印件。
本地行为:
priority.__init__.py
sync.tasks.keywords.py
priority.reasons.py
priority.__init__.py (<- circular import but it works??)
priority.reasons.py
服务器行为:
priority.__init__.py
sync.tasks.keywords.py
priority.__init__.py (<- circular import but it works??)
Traceback (most recent call last):
...
from sync.tasks.keywords import check_keywords
ImportError: cannot import name check_keywords
我完全不知所措。代码完全一样。令我感到困惑的是,在出错之前,进口链略有不同。
那么......关于从哪里开始寻找的任何提示?
答案 0 :(得分:0)
我建议通过移动类/函数中的一个导入(而不是文件的顶部)来打破循环导入。在我看来,这种方法没有任何严重的缺点,并且节省了大量时间对循环导入进行硬性和相当无用的调试。