Paquetes en Python: Estructura, Importación y Mejores Prácticas
Paquetes en Python
Aprende a organizar una base de código en crecimiento con paquetes de Python y a importar tus propios módulos o de terceros de manera eficiente.
Video: Paquetes en Python – Organiza tu Código
¿Qué son los Paquetes?
Al igual que agrupamos archivos en carpetas en el disco para mayor claridad, Python utiliza paquetes para agrupar módulos relacionados. Un paquete es simplemente un directorio que contiene un archivo __init__.py; esto indica a Python que trate la carpeta como un espacio de nombres.
Cuando un proyecto crece, mantener módulos similares juntos en un paquete hace que el proyecto sea manejable y autodocumentado. Los paquetes también pueden contener subpaquetes, replicando la forma en que los directorios pueden anidarse.
Por ejemplo, un proyecto de juego podría tener esta estructura:

Importando Módulos desde un Paquete
Los módulos se importan usando la notación de punto (.). Para importar start.py desde el paquete Game/Level, usa:
import Game.Level.start
Si start.py define una función select_difficulty(), llámala con el espacio de nombres completo:
Game.Level.start.select_difficulty(2)
Para reducir la verbosidad, puedes importar el módulo al espacio de nombres local:
from Game.Level import start
Ahora select_difficulty se puede acceder como:
start.select_difficulty(2)
Para importaciones aún más concisas, importa la función directamente:
from Game.Level.start import select_difficulty
Luego llámala simplemente:
select_difficulty(2)
Aunque conciso, importar a nivel de función puede provocar colisiones de nombres si diferentes módulos exponen símbolos con el mismo nombre. Usar la ruta completa del paquete mantiene el espacio de nombres explícito y más seguro.
Python resuelve las importaciones de paquetes buscando en los directorios listados en sys.path, igual que hace con los módulos regulares.
python
- Dominando tipos de datos en Python: Guía práctica
- Dominando operadores en Python: Guía completa
- Dominando la sentencia pass en Python: Guía práctica
- Dominando argumentos de funciones en Python: Posicionales, por palabra clave y por defecto
- Dominando Diccionarios en Python: Creación, Manipulación y Técnicas Avanzadas
- Dominando Iteradores en Python: Cómo Funcionan y Cómo Crear los Tuyos
- Explicación de Closures en Python: Cómo las Funciones Anidadas Capturan Variables
- Dominando datetime en Python: Guía Práctica de Fechas, Horas y Zonas Horarias
- Dominar time.sleep() en Python: Mejores Prácticas, Multihilo y Ejemplos Reales
- Visión general de Python: Lenguaje de alto nivel, legible, interactivo y orientado a objetos
- Números en Python: Entendiendo tipos de datos numéricos inmutables