对Python子包感到困惑

2024-04-24 05:09:03 发布

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

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

draw \
    __init__.py

    base \
        __init__.py
        utils.py
        events.py
        master.py
        basegui.py

现在,draw.base.events的第一行如下:

^{pr2}$

draw.base的第一行是:

from draw.base.events import Event, RenderEvent, InputEvent, MouseEvent, keyboardEvent

只需在IDLE下检查语法错误的代码:

import draw.base as base

给出以下AttributeError

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'

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


Tags: inpyimportbaseinitaslineutils
1条回答
网友
1楼 · 发布于 2024-04-24 05:09:03

为了在^{中导入draw.base.utils,Python需要导入现在正在导入的draw.base,因此还没有{}。您可以将import draw.base.utils替换为import utils(也可以在2.7、3.x中使用from ..base import utils或在draw.base.events中用from __future__ import absolute_import)来打破圆圈。在

相关问题 更多 >