Смущен субпакетами Python - PullRequest
       26

Смущен субпакетами Python

4 голосов
/ 22 ноября 2011

, как говорится в названии, я не совсем понимаю, что такое подпакеты. Моя структура пакета следующая:

draw \
    __init__.py

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

Теперь первая строка draw.base.events выглядит следующим образом:

import draw.base.utils as _utils

И первая строка 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'

Может кто-нибудь объяснить мне, в чем проблема?

1 Ответ

2 голосов
/ 22 ноября 2011

Чтобы импортировать draw.base.utils в draw.base.events Python необходимо импортировать draw.base, который импортируется сейчас, поэтому draw.base пока нет.Вы можете заменить import draw.base.utils на import utils (вы также можете использовать что-то вроде from ..base import utils в 2.7, 3.x или from __future__ import absolute_import) в draw.base.events, чтобы разорвать круг.

...