Saltar al contenido

Actualizar todos los paquetes con pip a la última versión

Cómo actualizar con pip todos los paquetes a la última versión

El mantenimiento de nuestras aplicaciones es algo que no debemos dejar pasar. Mejoras, corrección de errores, nuevas funcionalidades, actualizar paquetes de terceros… Es en este último punto en el que me voy a centrar en este post. Las librerías que usamos de terceros también tienen su propio mantenimiento y hoja de ruta y, antes o después, será necesario que tengamos que actualizar la versión que utilicemos de alguna de ellas.

Si usas pip como herramienta de gestión de paquetes, sigue leyendo pues esto te interesa.

Actualizar un paquete con pip a la última versión

Para actualizar un paquete concreto con pip a la última versión, ejecuta el siguiente comando:

$> pip install -U <nombre del paquete>

Veamos un ejemplo para actualizar Flask:

$> pip install -U flask

Por defecto, pip actualizará este paquete pero también sus dependencias si fuera necesario.

Actualizar un paquete pero no sus dependencias

Si no quisiéramos actualizar las dependencias de un paquete cuando actualizamos este, tendríamos que ejecutar el mismo comando pero con el flag --no-deps:

$> pip install -U --no-deps flask

Actualizar todos los paquetes con pip

Por defecto, pip no dispone de ninguna opción para actualizar a la vez todas las dependencias de nuestra aplicación. Por seguridad no está mal. Actualizar sin control todos los paquetes de los que depende nuestro proyecto puede acabar en el caos más absoluto 😂 Es posible que nos lleve un buen rato probar todo y confirmar que la aplicación sigue funcionando correctamente.

Sin embargo, existe una forma para actualizar todas las dependencias de nuestro proyecto. Para ello, ejecuta el siguiente comando:

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

Con esto se actualizarán a la última versión todos los paquetes de terceros junto con sus dependencias. Pero recuerda: ¡Un gran poder conlleva una gran responsabilidad!, jaja.