Estamos preparando el PDF de «Estructura de un proyecto Python». Se descargará automáticamente en cuanto esté listo.
← Lumbre

Programación Orientada a Objetos · 2.º Estructura de un proyecto Python

Portada de Estructura de un proyecto Python

Estructura de un proyecto Python

✦ Un script suelto se vuelve un problema cuando crece · Programación Orientada a Objetos · Programación · en 8 minutos

Roadwise Consulting

Firmado y verificado · Biblioteca UNIV

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

8 min Programación Orientada a Objetos · Programación 18–30 años
Más
Estructura de un proyecto Python

Herramientas de la lección

◉ Entrar a La Matrix Sorpréndeme

Sobre este contenido

Ir a

Volver a Programación Orientada a Objetos · 2.º semestre Cursos Explorar Mi cuenta Salir del modo estudio

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

  • Programacion OO
    • Clases
      • Objetos
      • Atributos
      • Metodos self
    • Encapsulamiento
      • Public
      • Private
      • Properties
    • Herencia
      • Polimorfismo
      • Abstractas
      • Interfaces
    • Composicion
      • Sobre herencia
      • Delegacion
      • Acoplamiento
    • Proyecto
      • Paquetes
      • Modulos
      • Convenciones

Módulo vs paquete

  • Módulo: un archivo .py con código.
  • Paquete: una carpeta con un __init__.py que agrupa módulos; se importa con puntos (paquete.submodulo).

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

  • Poner todo en un solo script que crece hasta ser ilegible.
  • Importar desde la raíz del proyecto sin instalarlo: funciona en tu máquina y rompe en la de nadie.
  • No fijar versiones: el proyecto se descompone cuando una librería cambia.

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:

Arrastra cada ficha a su categoría (o tócala y luego toca la categoría). También puedes usar el teclado.

Video complementario
Recurso audiovisual para reforzar los conceptos.

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?

Tu texto se guarda sólo en este dispositivo.

Las respuestas y tu progreso se guardan sólo en este dispositivo. Contenido firmado por su autoría mediante Lumbre.
Más sobre esta lección
Explora temas relacionados

Conceptos

Comentarios

Inicia sesión para comentar.

Todavía no hay comentarios. Sé la primera persona en opinar.