Cómo instalar paquetes Python con requirements.txt

Foto por Andy Roberts. Algunos derechos reservados.

Existe un método mucho más eficaz para descargar e instalar los paquetes necesarios para un proyecto desarrollado con Python. Este método involucra utilizar un archivo de texto, en el cual se anotan los paquetes para que pip se encargue de instalarlos de forma automática.

El archivo en cuestión se le llama requirements.txt y tiene un formato específico para anotar cada uno de los paquetes a instalar. Por lo general se ubica en el directorio raíz del proyecto.

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 que ayuden a construirlo con un buen nivel de calidad en menor tiempo.

Para descargar los paquetes necesarios, es posible ir al sitio web del paquete o acceder al repositorio en Github. Esto esta bien, pero es un método muy tedioso y para nada efectivo.

Si por alguna razón se pierden los paquetes descargados, es necesario volver a cada uno de 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 anotar los paquetes Python en el archivo requirements.txt

Hay dos cosas que se deben saber antes de anotar un paquete en el archivo requirements.txt. En primer lugar se debe saber su nombre exacto. Para esto es posible buscarlo en el repositorio PyPi ejecutando el siguiente comando en una terminal:

$ pip search termino_de_busqueda

Es necesario tener instalado pip para poder ejecutar el comando apenas mencionado. Este tutorial explica muy bien el proceso de instalación.

Por ejemplo, se va a desarrollar un videojuego y para esto se necesita instalar Pygame. Se realiza 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.

Hasta este punto se conoce el nombre exacto del paquete. Sin embargo, es aconsejable 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.

Si no se anota un número de versión junto al nombre del paquete en el archivo requirements.txt, pip instalará por defecto la última versión disponible en el repositorio PyPi de ese paquete.

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
nombre_del_paquete==version

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

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

Pygame==1.7.1

Si no se desea instalar una versión menor que 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.