这是来自python 3.7 changelog的一点。
bpo-30024:现在支持涉及将子模块绑定到名称的绝对导入的循环导入。
在3.6中不起作用但现在有效的代码示例是什么?
答案 0 :(得分:5)
Issue 30024讨论了问题和补丁。但我没有立即发现它有用。它确实提到了获得一个适当的,易于理解的测试示例将是一个重要的步骤。
patch添加了以下内容:
在Lib / test / test_import / data / circular_imports / binding.py中:
import test.test_import.data.circular_imports.binding2 as binding2
在Lib / test / test_import / data / circular_imports / binding2.py中:
import test.test_import.data.circular_imports.binding as binding
模块的两个子模块作为某个名称互相导入。以下是可能在之前失败的测试:
def test_binding(self):
try:
import test.test_import.data.circular_imports.binding
except ImportError:
self.fail('circular import with binding a submodule to a name failed')