python - импорт подпакета из пакета не работает? - PullRequest
2 голосов
/ 05 февраля 2011

У меня есть следующие файлы:

pack/__init__.py
pack/subpack/__init.__py
pack/subpack/mod2.py

И следующий код завершается ошибкой в ​​последней строке:

from pack import * #should import everything
print subpack      #NameError: name 'subpack' is not defined

Я ожидаю, что подпакет будет импортирован - почему существуетРазница, и как я могу это преодолеть? Важно: под "преодолением" я имею в виду возможность ссылаться на subpack без необходимости постоянно писать pack.subpack.

Ответы [ 3 ]

8 голосов
/ 05 февраля 2011

Вам нужно добавить

__all__ = ["mod1", "subpack"]

к pack/__init__.py.Без этой строки mod1 также не будет импортирован, поэтому мне интересно, что там происходит.Смотрите также соответствующий раздел в руководстве Гвидо .

2 голосов
/ 05 февраля 2011

Попробуйте добавить "import subpack" в pack/__init__.py

Если вы объявили __all__, убедитесь, что там отображается «subpack».

1 голос
/ 28 сентября 2018

Альтернативное предложение для Python 3:

# pack/__init__.py
from . import subpack

И, как уже упоминалось, если объявлено __all__, то добавьте сюда 'subpack'.

И не забудьте, что если вам нужно НЕ только:

print subpack

, но также:

print subpack.mod2

, то вам необходимо выполнить аналогичные операции в pack/subpack/__init.__py файле

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...