对Python子包感到困惑

对Python子包感到困惑,python,module,packages,Python,Module,Packages,正如标题所说,我对子包感到困惑。我的包结构如下所示: draw \ __init__.py base \ __init__.py utils.py events.py master.py basegui.py import draw.base.utils as _utils 现在,draw.base.events的第一行如下: draw \ __init__.py base \

正如标题所说,我对子包感到困惑。我的包结构如下所示:

draw \
    __init__.py

    base \
        __init__.py
        utils.py
        events.py
        master.py
        basegui.py
import draw.base.utils as _utils
现在,
draw.base.events
的第一行如下:

draw \
    __init__.py

    base \
        __init__.py
        utils.py
        events.py
        master.py
        basegui.py
import draw.base.utils as _utils
draw.base
的第一行是:

from draw.base.events import Event, RenderEvent, InputEvent, MouseEvent, KeyboardEvent
只需使用IDLE检查代码中的语法错误:

import draw.base as base
给出以下
属性错误

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    import draw.base
  File "Z:\Eigene Dateien\Eigene Dokumente\Python\draw\base\__init__.py", line 4, in <module>
    import draw.base.events as events
  File "Z:\Eigene Dateien\Eigene Dokumente\Python\draw\base\events.py", line 10, in <module>
    import draw.base.utils  as _utils
AttributeError: 'module' object has no attribute 'base'
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
导入draw.base
文件“Z:\Eigene-Dateien\Eigene-Dokumente\Python\draw\base\\uuuuu init\uuuuuu.py”,第4行,在
将draw.base.events导入为事件
文件“Z:\Eigene-Dateien\Eigene-Dokumente\Python\draw\base\events.py”,第10行,在
将draw.base.utils导入为_utils
AttributeError:“模块”对象没有属性“基”

有人能给我解释一下问题是什么吗?

为了在
draw.base.events
中导入
draw.base.utils
,Python需要导入
draw.base
,它现在正在导入,所以还没有
draw.base
。您可以将
导入draw.base.utils
替换为
导入utils
(您也可以在2.7、3.x中使用类似于
的从.base导入utils
,或者在
draw.base.events
中使用
从.base导入utils
)来打破循环。

draw.base
一个单独的文件吗?否则,我不明白你所说的“绘制.base的第一行”是什么意思。我相信他指的是使用
import draw.base import draw.base.utils的
draw/base/\uuu init\uuuuuuuuuuuuuy.py的第一行
。(Python 2.7)是否必须在
draw\\uuuu init\uuuuu.py
中导入
draw.base
import.utils
是一个语法错误,它只能作为
from..base import utils
。我想避免使用xx import yy的
,因为我更喜欢其他语法。但我明白了,这是没有办法的