¿Cómo organizar archivos de código fuente de Python? [cerrado
Pregunta
Estoy desarrollando una aplicación Python App Engine, donde quiero dividir el contenido de un archivo de código fuente Models.py
en archivos separados para cada modelo, pero quiero ponerlo todo en una carpeta llamada modelos. El problema es que cuando hago eso, mi aplicación ya no puede encontrar las clases. ¿Qué tengo que hacer?
Esta pregunta no se trata de MVC Pero otra pregunta con el mismo título es.
Solución
Poner un vacío __init__.py
Archivo en el directorio de modelos.
Entonces, en tu aplicación; Presumiblemente de un nivel, usted hace referencia a módulos en el directorio de modelos como este:
import Models
Y haz algo con esto así:
Models.my_model.MyClassName
También puedes usar el from
Palabra clave como esta:
from Models import my_model
y referencia como esta:
my_model.MyClassName
Si solo necesita un método de un módulo, también puede hacer esto:
from Models.my_model import my_method_name
my_method_name()
Enlace obligatorio al documentación.
Otros consejos
En respuesta a su comentario a la respuesta de Adam, con respecto a tener 10 importaciones para 10 clases, en primer lugar, no olvide que no hay necesidad de tener una clase por módulo en Python. Los módulos deben organizarse por funcionalidad, por lo que puede agrupar clases relacionadas en un solo archivo si eso tiene sentido.
Si aún quisiera hacer todas las clases importables de una vez, podría importarlas todas en el __init__.py
Archivo mismo usando el from submodule import Class
Sintaxis, luego solo importe el módulo de contenido - import mainmodule
y consulte mainmodule.Class1
etc, o incluso usar from mainmodule import Class1, Class2, Class3
para importar las clases directamente a su espacio de nombres y consulte ellas directamente.
Adam Bernier ofrece una buena descripción técnica de cómo funcionan los paquetes. Una gran descripción de cómo organizar y enviar un proyecto se describe en http://jcalderone.livejournal.com/39794.html