Módulos, paquetes e imports en Python: arquitectura desde el inicio

Aprende a organizar proyectos Python en módulos y paquetes, usar imports correctamente y evitar ciclos o acoplamiento innecesario.

Un módulo es un archivo `.py` con código reutilizable; un paquete es una carpeta que agrupa módulos relacionados.

Organizar por módulos reduce archivos monolíticos y facilita pruebas, mantenimiento y trabajo en equipo.

El sistema de imports de Python resuelve rutas según contexto de ejecución, por lo que estructura y punto de entrada importan.

Importar correctamente evita duplicación y dependencias circulares difíciles de depurar.

  • Cada módulo debe agrupar una responsabilidad coherente.
  • Si tienes funciones de validación, cálculo y persistencia en un solo archivo, el acoplamiento crece muy rápido.
  • Separar por módulos (`validators.py`, `services.py`, `repository.py`) hace explícita la arquitectura.
  • No se trata de crear muchos archivos porque sí, sino de mantener cohesión interna alta y dependencias claras.
  • Un paquete agrupa módulos del mismo dominio y define fronteras lógicas.

1) Módulo: unidad mínima de organización

Cada módulo debe agrupar una responsabilidad coherente.

Si tienes funciones de validación, cálculo y persistencia en un solo archivo, el acoplamiento crece muy rápido.

Separar por módulos (`validators.py`, `services.py`, `repository.py`) hace explícita la arquitectura.

No se trata de crear muchos archivos porque sí, sino de mantener cohesión interna alta y dependencias claras.

2) Paquetes y jerarquía de proyecto

Un paquete agrupa módulos del mismo dominio y define fronteras lógicas.

Estructuras típicas incluyen carpeta `app/` con submódulos por dominio: `users/`, `billing/`, `shared/`.

Evita importar desde capas inferiores hacia superiores de forma caótica; define dirección de dependencias.

Una jerarquía limpia permite que nuevos miembros entiendan el proyecto sin leer todo el código.

3) Buenas prácticas de imports

Importar bien es una decisión de mantenibilidad, no solo de estilo.

Agrupa imports en tres bloques: estándar, terceros y módulos propios del proyecto.

Evita `from modulo import *`: contamina namespace y complica trazabilidad de símbolos.

Si detectas import circular, probablemente hay diseño de capas acoplado: extrae contratos o mueve responsabilidades.

  • Prefiere imports explícitos y trazables.
  • Mantén dependencias en una sola dirección entre capas.
  • Centraliza utilidades transversales en módulos compartidos.
  • Documenta entrypoint principal (`main.py`, `cli.py`, etc.).
Python
10

Módulos, paquetes e imports en Python: arquitectura desde el inicio

Aprende a organizar proyectos Python en módulos y paquetes, usar imports correctamente y evitar ciclos o acoplamiento innecesario.

Código del tema: Automatizacion y codigo legible en Python

📘 Teoría

1) Módulo: unidad mínima de organización

Cada módulo debe agrupar una responsabilidad coherente.

1

Si tienes funciones de validación, cálculo y persistencia en un solo archivo, el acoplamiento crece muy rápido.

2

Separar por módulos (`validators.py`, `services.py`, `repository.py`) hace explícita la arquitectura.

3

No se trata de crear muchos archivos porque sí, sino de mantener cohesión interna alta y dependencias claras.

Import de módulo estándar
import math

radio = 3
area = math.pi * radio ** 2
print(round(area, 2))

2) Paquetes y jerarquía de proyecto

Un paquete agrupa módulos del mismo dominio y define fronteras lógicas.

Estructuras típicas incluyen carpeta `app/` con submódulos por dominio: `users/`, `billing/`, `shared/`.

Evita importar desde capas inferiores hacia superiores de forma caótica; define dirección de dependencias.

Una jerarquía limpia permite que nuevos miembros entiendan el proyecto sin leer todo el código.

1

Estructura orientativa

Ejemplo de organización mínima escalable.

2

Import absoluto recomendado

Más legible en proyectos medianos/grandes.

3) Buenas prácticas de imports

Importar bien es una decisión de mantenibilidad, no solo de estilo.

Agrupa imports en tres bloques: estándar, terceros y módulos propios del proyecto.

Evita `from modulo import *`: contamina namespace y complica trazabilidad de símbolos.

Si detectas import circular, probablemente hay diseño de capas acoplado: extrae contratos o mueve responsabilidades.

  • Prefiere imports explícitos y trazables.
  • Mantén dependencias en una sola dirección entre capas.
  • Centraliza utilidades transversales en módulos compartidos.
  • Documenta entrypoint principal (`main.py`, `cli.py`, etc.).
Bloques de imports recomendados
import os
from datetime import datetime

import requests

from app.users.service import crear_usuario

print(datetime.now(), os.name)
print(crear_usuario('ana@empresa.com'))

🧪 Aprende probando

Ejemplo Ejemplo: importar módulo y usar API explícita Uso correcto de `import math` para mantener contexto del origen de funciones.

🏁 Retos

Reto Reto: corrige import y llamada Repara un código que usa `sqrt` sin importar su módulo origen.

🧰 Recursos

Test

Comprueba tus conocimientos con un test sobre Python.

Test de Python

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .