Python: actualice todos los paquetes con pip-review

En este tutorial, repasaremos una gran herramienta simple: pip-review, para actualizar automáticamente todos los paquetes de Python.

Introducción

Actualizar paquetes de Python puede ser una molestia. Hay muchos de ellos: es difícil hacer un seguimiento de todas las versiones más recientes, e incluso cuando decide qué actualizar, aún tiene que actualizar cada uno de ellos manualmente.

Para solucionar este problema, se creó pip-revisión. Le permite administrar sin problemas todas las actualizaciones PyPi disponibles con comandos simples.

Originalmente una parte del paquete pip-tools, ahora vive como un envoltorio de conveniencia independiente alrededor de pip. En este tutorial, cubriremos cómo actualizar todos los paquetes con pip-review.

Instalar pip-review

Puede instalar pip-review en un entorno virtual, si desea contenerlo, o en todo el sistema. Naturalmente, la instalación de pip-review se realiza a través de pip:

1
2
3
$ pip install pip-review
...
Successfully installed pip-review-1.1.0

Página de ayuda de pip-review

Si olvida alguno de estos comandos o simplemente desea obtener una descripción general de las opciones de comando:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
$ pip-review -h
usage: pip-review [-h] [--verbose] [--raw] [--interactive] [--auto]

Keeps your Python packages fresh. Looking for a new maintainer! See https://github.com/jgonggrijp/pip-review/issues/76

optional arguments:
  -h, --help         show this help message and exit
  --verbose, -v      Show more output
  --raw, -r          Print raw lines (suitable for passing to pip install)
  --interactive, -i  Ask interactively to install updates
  --auto, -a         Automatically install every update found

Unrecognised arguments will be forwarded to pip list --outdated and pip install, so you can pass things such as --user, --pre and --timeout and they will do what you expect. See pip list -h and pip install -h
for a full overview of the options.

Comprobar todas las versiones del paquete con pip-review

A veces, solo desea verificar si hay actualizaciones, antes de comprometerse con una lista de actualizaciones potencialmente larga. Para verificar todas las versiones del paquete, simplemente ejecute:

1
2
3
4
5
$ pip-review
scikit-learn==0.23.2 is available (you have 0.23.1)
scipy==1.5.4 is available (you have 1.4.1)
seaborn==0.11.0 is available (you have 0.10.1)
...

Esto le brinda un informe que enumera todas las actualizaciones de paquetes disponibles. Esencialmente, llama lista de pip – desactualizada. Esto tiene la ventaja de permitirle decidir qué paquetes le gustaría actualizar, si es que desea actualizar alguno.

Actualizar todos los paquetes con pip-review

Una vez que haya identificado si desea actualizar sus paquetes, puede actualizarlos todos, automáticamente, usando:

1
2
3
4
$ pip-review --auto
Collecting beautifulsoup4==4.9.3
Downloading beautifulsoup4-4.9.3-py3-none-any.whl (115 kB)
...

Ejecutando solo este comando solo, está listo para comenzar. Es así de simple.

Actualice todos los paquetes de forma interactiva con pip-review

Si quizás no desea actualizar algunos paquetes específicos, no necesita ejecutar el actualizador --auto. Si inicia el proceso como --interactive, puede elegir para cada paquete individual si desea actualizarlo o no:

1
2
3
4
5
6
7
8
$ pip-review --interactive
matplotlib==3.3.3 is available (you have 3.1.3)
Upgrade now? [Y]es, [N]o, [A]ll, [Q]uit N
numpy==1.19.4 is available (you have 1.18.1)
Upgrade now? [Y]es, [N]o, [A]ll, [Q]uit Y
pandas==1.1.5 is available (you have 1.0.3)
Upgrade now? [Y]es, [N]o, [A]ll, [Q]uit N
...

Para cada paquete, tiene cuatro opciones disponibles, “Sí”, “No”, “Todos” y “Salir”.

Seleccionar “Sí” indica que desea que ese paquete en particular se agregue a la "lista-por-actualizar". Al final, todos los paquetes de esta lista se actualizan.

Si termina seleccionando “No”, significaría que el paquete no se actualizará. Seleccionar “Todos” significa que todos los paquetes en adelante se agregarán a la lista. Finalmente, seleccionar “Salir” significaría que pip-review omitirá todos los paquetes restantes y actualizará solo aquellos a los que seleccionó “Sí”.

Impedir que pip-review actualice ciertos paquetes

En algunas situaciones, es posible que desee evitar que ciertos paquetes se actualicen automáticamente al ejecutar pip-review --auto. Esto podría ser quizás para evitar problemas de dependencias, un problema común.

En estos casos, desearía anclar los paquetes específicos que no desea actualizar. Puede hacerlo a través de un archivo de restricciones. Un archivo de restricciones es un archivo de requisitos que solo controla qué versión de un requisito está instalada, no si está instalada o no.

Su sintaxis y contenido son idénticos a los de los archivos de requisitos. Hay una diferencia clave:

Incluir un paquete en un archivo de restricciones no activa la instalación del paquete.

Hagamos un archivo constraints.txt:

1
$ export PIP_CONSTRAINT="/home/username/constraints.txt

Y ahora dentro de él, insertaremos:

1
2
matplotlib==3.1.3
pandas==1.0.3

Conclusión

Actualizar paquetes usando pip puede ser tedioso y llevar mucho tiempo. Y como era de esperar en el mundo de la informática, nació una herramienta para automatizar esto. En este artículo, hemos repasado la utilidad pip-review: cómo instalarla y cómo usarla para actualizar paquetes en Python.