Пакеты Python - импорт по классам, а не по файлам - PullRequest
47 голосов
/ 05 сентября 2008

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

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

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

from app.controllers.project import Project

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

from app.controllers import Project

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

1 Ответ

84 голосов
/ 05 сентября 2008

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

from project import Project

в controllers/__init__.py.

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

from .project import Project
...