Cómo instalar paquetes Python con requirements.txt

Monty Python's spam a lot spamalot7.JPG por Andy Roberts. CC BY. Imagen con calidad y tamaño reducidos.

Existe una forma mucho más conveniente para descargar e instalar los paquetes necesarios para un proyecto Python. Involucra utilizar un archivo de texto (llamado requirements.txt), en el cual se anotan los paquetes para que pip se encargue de instalarlos de forma automática.

El archivo requirements.txt permite automatizar la instalación de paquetes

Generalmente, cuando se está desarrollando algún tipo de software (aplicaciones web, videojuegos), es muy común utilizar un conjunto de paquetes o librerías que ayuden a construirlo con un nivel de calidad aceptable en menos tiempo.

Los paquetes necesarios se pueden descargar directamente desde el sitio web; clonar desde un repositorio, por lo general un repositorio Git alojado en Github; o instalarlos directamente usando pip. Sin embargo, este procedimiento manual es muy tedioso y lejos de ser eficiente.

Si por alguna razón se pierden los paquetes obtenidos o se necesita utilizar una nueva computadora para continuar con el desarrollo del proyecto, es necesario volver a los sitios web o repositorios y descargarlos de nuevo, uno por uno.

El archivo requirements.txt permite automatizar la instalación de paquetes Python y por lo tanto agilizar esta parte del proceso de desarrollo de software.

Cómo utilizar el archivo requirements.txt

Hay dos cosas que se deben saber antes de utilizar el archivo requirements.txt. En primer lugar se debe saber el nombre exacto de los paquetes o librerías que se quieren instalar. El nombre se puede buscar en el repositorio PyPi ejecutando el siguiente comando en una terminal:

$ pip search <package>

Es necesario tener instalado pip para poder ejecutar el comando anterior.

Por ejemplo, si se va a desarrollar un videojuego y para esto necesitamos instalar Pygame, realizamos una búsqueda con pip ejecutando el comando:

$ pip search pygame

El resultado del comando arroja un listado de paquetes:

KezMenu - A simple and basical Pygame library for...
spw - Simple Pygame Wrapper provides a 2D...
Pygame - Pygame gives multimedia to python.
glyph - Pygame typesetting library
zanthor - Zanthor is a game where you play an evil...

En el listado se puede ver la línea que comienza con Pygame, este es el nombre que se debe anotar en el archivo requirements.txt.

Además del nombre del paquete, es recomendable saber también la versión. Al anotar la versión en el archivo requirements.txt, pip instalará esa versión específica a pesar que existan versiones mas recientes.

Esto, sin lugar a dudas, evitará que se presenten problemas en el proyecto si el paquete es actualizado a una nueva versión y algunas de sus caracteristicas son removidas o actualizadas.

Si no se anota el número de versión del paquete, pip instalará por defecto la última versión disponible en el repositorio PyPi.

Para saber la versión, se puede consultar el sitio web del repositorio PyPi o ir al sitio web de cada paquete y revisar las versiones disponibles.

Ahora si, con estos dos datos se pueden anotar los paquetes Python en el archivo requirements.txt de la siguiente forma:

# Para instalar una versión específica
package==version

# Para instalar una versión igual o superior
package>=version

# Para instalar la versión más reciente
package

Por ejemplo, si se quiere instalar la versión 1.7.1 de Pygame, se anota lo siguiente:

Pygame==1.7.1

Si se desea instalar una versión mayor que o igual a la 1.7.1, se anota lo siguiente:

Pygame>=1.7.1

Cómo instalar los paquetes Python anotados en el archivo requirements.txt

Simplemente se ejecuta el siguiente comando en la terminal:

$ pip install -r requirements.txt

El comando anterior debe ejecutarse en el directorio dónde se encuentra el archivo requirements.txt.

Haciendo esto, se instalaran en el sistema o en el virtualenv que tengamos activado, los paquetes anotados en el archivo requirements.txt.