我正在使用Python 3与Django,我尝试使交叉导入失败,我不知道为什么...... 结构如下:
|--my_project
|-- system
|--__init__.py
|-- a.py
|-- b.py
a.py
from .b import TestB
class TestA(object):
pass
b.py
from .a import TestA
class TestB(object):
pass
a.py中的导入有效。但是b.py中的那个不起作用:ImportError: cannot import name 'TestA'
。我也尝试过使用绝对路径(from myproject.system.a import TestA
,但没有运气)。
对这个问题有什么看法吗?
答案 0 :(得分:1)
您可以使用多种方法来解决交叉导入问题:
重新组织您的模块,以便不存在交叉导入,即将类放到单个模块中等。
将$('select#exampleSelect').on('change', function() {
// Make sure that `table` variable is available inside your change method
table.ajax.reload();
});
替换为from module import foo
并使用全名。
将导入放在模块的末尾(不推荐)。
另见JSL 18.5.1。
答案 1 :(得分:0)
将导入放在a.py和b.py的末尾可以解决问题。 如果它没有帮助您尝试将导入移动到类定义块中,那么替换
from .a import TestA
Class TestB(object):
pass
到
Class TestB(object):
from .a import TestA
pass
小建议:不要使用相对导入。