← Lumbre

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

← Volver a todos los contenidos
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 4 minutos

Roadwise Consulting

Firmado y verificado · Fernando Castro

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

4 min 18–30 años
Autoevaluación
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 Objetos 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.

Autoevaluación

Comprueba lo que aprendiste

2 preguntas · ves cada respuesta al momento · el resultado queda guardado en tu historial

Iniciar autoevaluación
Más sobre esta lección

Rutas vivas

¿Y ahora qué? Elige el camino por lo que necesitas

No es un listado al azar: cada camino responde una pregunta distinta y te dice por qué.

Otra forma de comprenderlo

✦ Explorar el universo completo
Explora temas relacionados

Conceptos

Comentarios

Inicia sesión para comentar.

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