Estructura del proyecto para una aplicación Python
Cuando se trabaja en aplicaciones del mundo real, el tamaño del código base puede aumentar drásticamente. Generalmente, no se recomienda programar programas monolíticos o poner todo el código de la aplicación en un solo archivo. La razón detrás de lo mismo es que un programa monolítico puede crear errores más inesperados. Se vuelve inmanejable e ilegible a medida que aumenta el tamaño del programa y no promueve la colaboración.
Debido a tales problemas, se recomienda dividir la aplicación en segmentos o microservicios más pequeños que realicen su tarea especificada independientemente de otros servicios. Esta configuración promueve no solo una gestión mejor y más fácil, sino también la legibilidad y la productividad. Este artículo discutirá cómo deberíamos estructurar generalmente nuestras aplicaciones de Python para una mejor administración, legibilidad y productividad.
Estructura del proyecto para una aplicación Python
La idea es dividir el programa en componentes o microservicios más pequeños. Estos son esencialmente algunos directorios con archivos Python que solo realizan la tarea asignada a ellos. Por lo general, se trata de archivos independientes que son independientes de otros servicios. De esta forma, es fácil eliminar o agregar un servicio.
Tenga en cuenta que algunos de los directorios o segmentos mencionados pueden aplicarse o no a todas las aplicaciones a nivel mundial porque algunas aplicaciones son sencillas y no requieren muchas pruebas y administración. Al mismo tiempo, algunos son bastante largos y sólidos y requieren atención y gestión constantes.
Estos directorios y archivos deben crearse en una carpeta de proyecto principal vacía.
LICENSE
: Este archivo contiene información legal sobre las pautas de uso de la aplicación y los detalles de distribución de la aplicación.README.md
: este archivo de rebajas contiene una breve descripción de la aplicación, sus archivos, pautas para configurar la aplicación y ejecutarla, pautas para la contribución, si la aplicación es de código abierto, etc.setup.py
orun.py
: este archivo es el punto de entrada para cualquier aplicación de Python. Esto significa que siempre que deseamos ejecutar una aplicación Python siguiendo una estructura de proyecto similar, tenemos que ejecutar este archivo simplemente.env
oenvironment
: este es el entorno virtual Python de la aplicación.requirements.txt
: este archivo de texto contiene información sobre las dependencias de la aplicación Python./<sub-application>
: esta carpeta contiene una sub-aplicación independiente o un microservicio. Estas carpetas deben tener un__init__.py
que las convierte en módulos de Python. Podemos encontrar dichas carpetas en las aplicaciones Django y Flask en forma de aplicaciones y planos, respectivamente. Tenga en cuenta que, dado que estas miniaplicaciones o microservicios son independientes de otras aplicaciones similares, pueden tener sus propias carpetas/tests
,/static
,/templates
y archivosmodels.py
yforms.py
./docs
: esta carpeta contiene la documentación de la aplicación Python. En general, se espera que la documentación sea sólida y completa para que el usuario final pueda comprender la aplicación sin ningún problema./tests
: esta carpeta contiene todos los tests de la aplicación. Dado que las pruebas son un paso esencial antes de llevar cualquier aplicación a producción, debe tener su directorio dedicado. El número de pruebas puede aumentar drásticamente cuando crece la aplicación o las funciones./static
: esta carpeta contiene todos los archivos estáticos de la aplicación, como imágenes, videos, logotipos e íconos. Si el proyecto es una aplicación web, la carpetastatic
también contendrá archivos CSS y JavaScript. Se puede encontrar esta carpeta en las aplicaciones Django y Flask./templates
: esta carpeta contiene todas las plantillas HTML utilizadas por la aplicación Python. Generalmente, esta carpeta es relevante para las aplicaciones web de Python porque la web requiere HTML. Nuevamente, podemos encontrar esta carpeta en las aplicaciones Django y Flask.models.py
: este archivo contiene el código Python para los modelos de base de datos. Las clases de Python que representan modelos de bases de datos se definen dentro de este archivo cuando se usa un ORM o un mapeo relacional de objetos.database.db
: este archivo es la base de datos que utiliza la aplicación Python. Este archivo solo se necesita o se crea cuando la aplicación utiliza una base de datos simple basada en archivos como SQLite3.
Un ejemplo
Supongamos que estamos trabajando en un sitio web de blogs personales basado en la web. Entonces, la estructura del proyecto de dicha aplicación se verá así.
blog/
|-- LISCENSE
|-- README.md
|-- run.py
|-- models.py
|-- database.d
|-- environment/
|-- * files *
|-- requirements.txt
|-- users/
|-- __init__.py
|-- forms.py
|-- routes.py
|-- * files *
|-- blogs/
|-- __init__.py
|-- forms.py
|-- routes.py
|-- * files *
|-- docs/
|-- * files *
|-- tests/
|-- users/
|-- * files *
|-- blogs
|-- * files *
|-- static/
|-- users
|-- * files *
|-- blogs
|-- * files *
|-- templates/
|-- users
|-- * files *
|-- blogs
|-- * files *