Programación Orientada a Objetos · Programación

Estructura de un proyecto Python

Organizar un proyecto Python con paquetes, módulos, entornos y empaquetado para que sea mantenible y reproducible.

Estructura de un proyecto Python

Ilustracion de programacion orientada a objetos: jerarquia de clases con herencia y encapsulamiento.
Principios de la programacion orientada a objetos: clases, herencia y polimorfismo.

Mapa conceptual

Ordenar para poder crecer Un buen proyecto Python se reconoce antes de abrir un archivo: su carpeta raíz, su carpeta de código con un nombre, dependencias declaradas y pruebas separadas. La estructura es documentación.

Módulo vs paquete

Un layout típico

El layout src/ pone el código dentro de una carpeta homónima bajo src/, lo que evita importar accidentalmente el paquete desde la raíz. Encima: un archivo de configuración, pruebas en tests/, documentación, y dependencias declaradas.

Piezas que casi todo proyecto mediano debería tener.
ElementoPara quéEjemplo
src/mi_proyecto/el código realmain.py, utils.py
tests/pruebas separadastest_unidades.py
pyproject.tomlconfig de empaquetadonombre, versión, dependencias
requirements.txtdependencias fijadasnumpy==1.26.0
README.mdportada y usocómo instalar y ejecutar

El archivo __init__.py

Marca una carpeta como paquete. Puede estar vacío o exponer una API concreta: al hacer «from paquete import x» define qué se considera parte pública, ocultando el resto.

Dependencias declaradas

Nunca asumas librerías «instaladas globalmente»: decláralas. requirements.txt o pyproject.toml fijan qué versión de cada paquete necesitas. Eso es la diferencia entre un proyecto que otro puede correr y uno que solo corre en tu máquina.

Punto de entrada

Un proyecto define cómo se arranca: un main.py, o un entry point declarado en la configuración que permite lanzar tu herramienta como comando. Esto vuelve reutilizable lo que era un guion suelto.

¿Qué diferencia hay entre un módulo y un paquete?

Entornos aislados

Cada proyecto debería vivir en su propio entorno virtual (venv): un espacio con su intérprete y sus paquetes, para que las dependencias de un proyecto no choquen con las de otro. Se crea, se activa y se instalan paquetes ahí dentro.

Pruebas separadas

Los tests van en su propia carpeta, no mezclados con el código de producción. Una estructura clara permite correr todas las pruebas de un golpe y detectar regresiones cuando mueves algo.

Un proyecto bien estructurado mantiene las pruebas dentro de los mismos archivos de código para facilitar su lectura.

Errores frecuentes

De guion a proyecto

El salto de calidad ocurre cuando dejas de «ejecutar un archivo» y empiezas a «instalar un paquete». Puedes compartirlo, probarlo y versionarlo. La estructura hace posible todo lo demás.

Ordena los pasos de un proyecto nuevo:

Paso 1
Paso 2
Paso 3
Paso 4

Python Packaging
Guía oficial para empaquetar proyectos.

Revisa un proyecto Python que hayas hecho. Propón una estructura con src/, tests/ y un archivo de dependencias. ¿Qué paso de los de la lección falta en tu proyecto actual?

Python: Classes
Tutorial oficial de clases en Python 3.