Это совершенно нормально.Вы не определяете символ area1
в своем пакете mylib
, поэтому возникает ошибка.
Опция 1
Одним из решений будет экспорт всех символов из вашего подпакета.следующим образом:
from . import area1
Вариант 2
Другой способ заставить его работать, вы должны хотя бы импортировать этот символ в свой пакет, то есть
# mylib/area1/group11.py
def test():
print 'hello'
# mylib/__init__.py
from area1.group11 import test
import mylib
mylib.test() # OK
import mylib.area1.group11
mylib.area1.group11.test() # OK
Однако, поскольку ваш символ test
определен в mylib.area1.group11
, вы не сможете только импортировать mylib
для доступа к подпакетам и модулям в них..
Я пытаюсь сказать, что когда вы делаете import mylib
, вы импортируете символы, определенные в mylib/__init__.py
, а не подпакеты или подмодули.Вы также должны импортировать их.
Предупреждение : вам придется сделать то же самое в mylib/area1/__init__.py
и mylib/area2/__init__.py
, если вы хотите «экспортировать» / определить символы из mylib/area1/group11.py
Для получения более подробной информации: