在同一目录中交叉导入

2024-04-25 02:31:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Django中使用python3,我试图进行交叉导入,但失败了,我不知道为什么。。。 结构如下:

|--my_project
   |-- system
     |--__init__.py
     |-- a.py
     |-- b.py

a.py

^{pr2}$

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),但没有成功。 你知道这个问题吗?在


Tags: djangofrompyimportprojectinitmy结构
2条回答

有几种方法可以用来解决交叉导入问题:

  • 重新组织模块,以避免交叉导入,即将类放到单个模块中,等等。

  • from module import foo替换为import module,并使用全名。

  • 将导入放在模块末尾(不推荐)。

另请参见Circular imports in Python。在

将导入放在a.py和b.py末尾应该可以解决问题。 如果它不能帮助您尝试将import移到类定义块中,那么替换

from .a import TestA
Class TestB(object):
    pass

^{pr2}$

小建议:不要使用相对进口。在

相关问题 更多 >