Gestión de dependencias (pip, requirements.txt) - parte 2

Intermedio
Python
Python
Actualizado: 05/05/2026

Actualización y desinstalación

flowchart TD
    PIP["pip"] --> UPG["pip install -U pkg: actualizar"]
    PIP --> UNINST["pip uninstall pkg"]
    PIP --> LIST["pip list --outdated"]
    PIP --> CHECK["pip check: verifica conflictos"]
    UPG --> REQ["Actualizar requirements.txt"]
    REQ --> FREEZE["pip freeze > requirements.txt"]
    PIP -.->|moderno| UV["uv: 10-100x más rápido"]
    PIP --> SAFETY["safety / pip-audit: vulnerabilidades CVE"]

Mantener las dependencias de un proyecto Python actualizadas y gestionar eficientemente los paquetes instalados es una parte fundamental del ciclo de vida del desarrollo. En esta sección, exploraremos cómo actualizar y desinstalar paquetes utilizando pip, así como las mejores prácticas para estas operaciones.

Actualización de paquetes

Cuando trabajamos con proyectos a largo plazo, es común que necesitemos actualizar nuestras dependencias para obtener correcciones de errores, mejoras de rendimiento o nuevas funcionalidades.

Actualizar un paquete específico

Para actualizar un paquete a su versión más reciente:

pip install --upgrade nombre-del-paquete

O usando la forma abreviada:

pip install -U nombre-del-paquete

Por ejemplo, para actualizar la biblioteca requests:

pip install -U requests

Este comando actualizará requests a la última versión disponible, junto con sus dependencias si es necesario.

Actualizar a una versión específica

Si necesitas actualizar a una versión concreta, puedes especificarla:

pip install -U requests==2.31.0

Actualizar múltiples paquetes

Puedes actualizar varios paquetes a la vez:

pip install -U numpy pandas matplotlib

Actualizar todos los paquetes

Aunque pip no ofrece un comando directo para actualizar todos los paquetes, puedes lograrlo combinando varios comandos:

pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U

En Windows PowerShell:

pip list --outdated --format=freeze | ForEach-Object { $_.split('==')[0] } | ForEach-Object { pip install -U $_ }

Sin embargo, esta práctica debe usarse con precaución, especialmente en entornos de producción, ya que podría romper la compatibilidad entre paquetes.

Actualizar respetando restricciones de versión

Si tienes un archivo requirements.txt con restricciones de versión, puedes actualizar los paquetes respetando esas restricciones:

pip install -U -r requirements.txt

Verificación de paquetes desactualizados

Antes de actualizar, es útil identificar qué paquetes tienen actualizaciones disponibles:

pip list --outdated

Este comando mostrará una tabla con los paquetes desactualizados, sus versiones actuales y las versiones más recientes disponibles:

Package    Version  Latest   Type
---------- -------- -------- -----
numpy      1.24.0   1.26.0   wheel
pandas     1.5.3    2.1.1    wheel
requests   2.28.2   2.31.0   wheel

Para obtener un formato más procesable por scripts:

pip list --outdated --format=json

Desinstalación de paquetes

A medida que evolucionan los proyectos, es posible que algunas dependencias dejen de ser necesarias o deban ser reemplazadas.

Desinstalar un paquete

Para eliminar un paquete instalado:

pip uninstall nombre-del-paquete

Por ejemplo:

pip uninstall requests

Por defecto, pip solicitará confirmación antes de desinstalar. Para evitar esta confirmación:

pip uninstall -y requests

Desinstalar múltiples paquetes

Puedes desinstalar varios paquetes a la vez:

pip uninstall -y numpy pandas matplotlib

Desinstalar paquetes desde un archivo

Si tienes un archivo requirements.txt y quieres desinstalar todos los paquetes listados en él:

pip uninstall -r requirements.txt

Nuevamente, puedes agregar -y para evitar las confirmaciones:

pip uninstall -y -r requirements.txt

Desinstalar dependencias no utilizadas

Pip no elimina automáticamente las dependencias que fueron instaladas junto con un paquete. Para identificar paquetes que podrían no estar siendo utilizados, puedes usar herramientas como pip-autoremove:

pip install pip-autoremove
pip-autoremove nombre-del-paquete

Gestión de conflictos y problemas

Solución de problemas de actualización

A veces, las actualizaciones pueden generar conflictos o problemas de compatibilidad:

  • Conflictos de dependencias: Cuando diferentes paquetes requieren versiones incompatibles de una misma dependencia.
# Verificar la compatibilidad de los paquetes instalados
pip check
  • Problemas de compilación: Algunos paquetes con extensiones en C pueden fallar al actualizarse.
# Forzar la reinstalación ignorando la caché
pip install --no-cache-dir --force-reinstall nombre-del-paquete
  • Reversión a una versión anterior: Si una actualización causa problemas, puedes volver a la versión anterior.
pip install nombre-del-paquete==version-anterior

Limpieza de caché

Pip almacena en caché los paquetes descargados. Para liberar espacio:

pip cache purge

Para ver información sobre la caché:

pip cache info

Estrategias para entornos de producción

En entornos de producción, la actualización de dependencias debe abordarse con mayor cautela:

  • Pruebas de regresión: Antes de actualizar en producción, ejecuta pruebas exhaustivas en un entorno de staging.

  • Actualización gradual: Considera actualizar un subconjunto de dependencias a la vez, en lugar de todas simultáneamente.

  • Control de versiones estricto: Utiliza versiones exactas en tu archivo requirements.txt para producción.

  • Registro de cambios: Mantén un registro de las actualizaciones realizadas:

# Guardar el estado actual antes de actualizar
pip freeze > requirements.old.txt

# Actualizar
pip install -U nombre-del-paquete

# Guardar el nuevo estado
pip freeze > requirements.new.txt

# Ver diferencias
diff requirements.old.txt requirements.new.txt

Herramientas avanzadas para actualización y mantenimiento

Para proyectos más complejos, considera estas herramientas especializadas:

  • pip-tools: Proporciona un flujo de trabajo más controlado para actualizar dependencias.
# Actualizar una dependencia específica en requirements.in
pip-compile --upgrade-package requests requirements.in
  • pip-review: Ofrece una interfaz interactiva para revisar y actualizar paquetes.
pip install pip-review
pip-review --interactive
  • safety: Verifica vulnerabilidades de seguridad en tus dependencias.
pip install safety
safety check
  • pyup: Servicio que monitoriza automáticamente tus dependencias y crea pull requests para actualizarlas.

Actualización y desinstalación en entornos virtuales

Recuerda que las operaciones de actualización y desinstalación afectan al entorno Python activo. Siempre verifica que estás trabajando en el entorno virtual correcto:

# Verificar el entorno Python activo
which python  # En Unix/Linux/macOS
where python  # En Windows

# Activar el entorno virtual si es necesario
source venv/bin/activate  # En Unix/Linux/macOS
venv\Scripts\activate     # En Windows

Mejores prácticas

  • Mantén un archivo requirements.txt actualizado: Después de actualizar o desinstalar paquetes, actualiza tu archivo requirements.txt.
pip freeze > requirements.txt
  • Utiliza entornos virtuales: Realiza actualizaciones en entornos aislados para evitar afectar a otros proyectos.

  • Actualiza con propósito: Actualiza paquetes por razones específicas (seguridad, nuevas funcionalidades) en lugar de hacerlo rutinariamente sin motivo.

  • Prueba después de actualizar: Ejecuta las pruebas de tu proyecto después de cada actualización significativa.

  • Revisa los registros de cambios: Antes de actualizar un paquete importante, revisa su registro de cambios para identificar posibles problemas de compatibilidad.

  • Considera el versionado semántico: Comprende cómo funciona el versionado semántico (MAJOR.MINOR.PATCH) para tomar decisiones informadas sobre actualizaciones.

Fuentes y referencias

Documentación oficial y recursos externos para profundizar en Python

Documentación oficial de Python
Alan Sastre - Autor del tutorial

Alan Sastre

Ingeniero de Software y formador, CEO en CertiDevs

Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, Python es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.

Más tutoriales de Python

Explora más contenido relacionado con Python y continúa aprendiendo con nuestros tutoriales gratuitos.

Aprendizajes de esta lección

Actualizar paquetes a versiones concretas o a la más reciente usando pip install --upgrade. Desinstalar paquetes individuales o en bloque desde un archivo requirements.txt. Identificar paquetes desactualizados con pip list --outdated y resolver conflictos con pip check. Aplicar estrategias seguras de actualización en entornos de producción. Conocer herramientas avanzadas como pip-tools, pip-review y safety para el mantenimiento de dependencias.