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

StackOverflow https://stackoverflow.com/questions/45122

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

Как это будет сделано?

Это было полезно?

Решение

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

from project import Project

в controllers/__init__.py.

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

from .project import Project
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top