Pacotes Python - importação por classe, não por arquivo
Pergunta
Digamos que eu tenha a seguinte estrutura de arquivos:
app/
app.py
controllers/
__init__.py
project.py
plugin.py
Se app/controllers/project.py definir uma classe Project, app.py o importaria assim:
from app.controllers.project import Project
Eu gostaria de poder fazer:
from app.controllers import Project
Como isso seria feito?
Solução
Você precisa colocar
from project import Project
em controllers/__init__.py
.
Observe que quando Importações absolutas se tornar o padrão (Python 2.7?), você desejará adicionar um ponto antes do nome do módulo (para evitar colisões com um modelo de nível superior chamado project
), ou seja,
from .project import Project
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow