我有一个位于/ var / django / project /的Django项目,其中/ var / django /在PATH中
在该项目中我有:
___init__.py
manage.py
utils/
__init__.py
tools.py
utils/__init__.py
包含名为get_preview
utils/tools.py
包含名为get_related
utils/__init__.py
如何从get_related
导入utils/tools.py
?
utils/tools.py
如何从get_preview
导入utils/__init_.py
?
我尝试了相对导入以及静态导入,但在尝试tools.py
from project.utils import get_preview
中出现错误
答案 0 :(得分:2)
你不能(也不应该)。如果模块中的文件引用与其关联的__init__.py
中的代码,那么构建代码的代码非常糟糕。要么将两个函数移动到__init__.py
中,要么将它们都移出__init__.py
,或者将它们放入单独的模块中。这些是你唯一的选择。
答案 1 :(得分:2)
是的,这是糟糕的结构。你必须注意这两个文件之间创建一个循环导入。 About circular imports
答案 2 :(得分:0)
你可以这样做,你只需要在运行时进行一次导入就可以避免循环导入。
例如,__init__.py
:
from project.utils.tools import get_related
def get_preview():
# ...
和tools.py
:
def get_related():
from project.utils import get_preview
# ...
get_preview()