Пакеты Python - импорт по классам, а не файл

Скажем, у меня есть следующая структура файла:

app/
  app.py
  controllers/
    __init__.py
    project.py
    plugin.py

Если app/controllerlers/project.py определяет класс Project, app.py будет импортировать его следующим образом:

from app.controllers.project import Project

Я бы просто хотел:

from app.controllers import Project

Как это сделать?

Ответ 1

Вам нужно поставить

from project import Project

в controllers/__init__.py.

Обратите внимание, что когда Абсолютный импорт станет по умолчанию (Python 2.7?), вы захотите добавить точку перед именем модуля (чтобы избежать столкновений с моделью верхнего уровня с именем project), т.е.

from .project import Project