相对导入在Python中不起作用

时间:2012-05-22 15:54:00

标签: python python-3.x

我有这样的项目结构......

app/
    main.py
    app/
        __init__.py
        boot.py
        server.py
        controllers/
            __init__.py
            home.py

进口是......

# main.py
from app import server

# server.py
from . import boot

# boot.py
from . import controllers

# controllers/__init__.py
from . import home

# controllers/home.py
from .. import boot

现在所有导入工作除了最后一个。引发的错误是......

ImportError: cannot import name boot

有什么问题? (我使用的是Python 3.2)

1 个答案:

答案 0 :(得分:8)

您要导入导入boot的{​​{1}},然后要求导入controllers,然后home尝试导入home,但它尚未完成导入。不要这样做,你在这里创建循环依赖。

另见Circular import dependency in Python