Ir al contenido principal

Gestión de dependencias con pip y entornos virtuales

Introducción

Cuando desarrollamos proyectos en Python, normalmente necesitamos utilizar bibliotecas y paquetes externos que no forman parte de la biblioteca estándar. La gestión eficiente de estas dependencias es fundamental para asegurar que nuestros proyectos funcionen correctamente y sean reproducibles en cualquier entorno. En este artículo, aprenderemos a utilizar pip, el gestor de paquetes de Python, y a trabajar con entornos virtuales, una herramienta esencial para aislar las dependencias de nuestros proyectos y evitar conflictos entre ellos.

El gestor de paquetes pip

¿Qué es pip?

pip es el sistema de gestión de paquetes estándar de Python que permite instalar y administrar bibliotecas adicionales que no están incluidas en la biblioteca estándar. Desde Python 3.4, pip viene preinstalado con Python.

Verificación de pip

Para comprobar si pip está instalado en nuestro sistema, podemos ejecutar:

pip --version

O alternativamente:

python -m pip --version

Comandos básicos de pip

Instalación de paquetes

Para instalar un paquete, utilizamos:

pip install nombre_paquete

Por ejemplo, para instalar la biblioteca requests:

pip install requests

Instalación de una versión específica

Podemos especificar la versión que queremos instalar:

pip install requests==2.28.1

Actualización de paquetes

Para actualizar un paquete a su última versión:

pip install --upgrade requests

Desinstalación de paquetes

Para eliminar un paquete:

pip uninstall requests

Listado de paquetes instalados

Para ver todos los paquetes instalados:

pip list

Búsqueda de paquetes

Para buscar paquetes en el índice PyPI (Python Package Index):

pip search nombre_paquete  # Obsoleto en versiones recientes

Nota: La funcionalidad de búsqueda ha sido desactivada en versiones recientes de pip. Se recomienda usar el sitio web PyPI para buscar paquetes.

Generación de un archivo de requisitos

Podemos crear un archivo con todas las dependencias de nuestro proyecto:

pip freeze > requirements.txt

Instalación desde un archivo de requisitos

Para instalar todas las dependencias listadas en un archivo:

pip install -r requirements.txt

Entornos virtuales

¿Qué son los entornos virtuales?

Los entornos virtuales son espacios aislados donde podemos instalar paquetes y dependencias específicas para un proyecto sin afectar a otros proyectos o al sistema global. Esto nos permite:

  • Evitar conflictos entre versiones de paquetes
  • Reproducir entornos de desarrollo en diferentes máquinas
  • Tener múltiples proyectos con diferentes requisitos en la misma máquina

Creación de entornos virtuales con venv

venv es el módulo estándar de Python para crear entornos virtuales desde Python 3.3 en adelante.

Creación de un entorno virtual

python -m venv mi_entorno

Esto crea una carpeta llamada mi_entorno con una copia del intérprete de Python y las herramientas necesarias.

Activación del entorno virtual

En Windows:

mi_entorno\Scripts\activate

En macOS y Linux:

source mi_entorno/bin/activate

Una vez activado, veremos el nombre del entorno en el prompt de la terminal:

(mi_entorno) $

Desactivación del entorno virtual

Para salir del entorno virtual:

deactivate

Gestión de paquetes en un entorno virtual

Una vez activado el entorno virtual, podemos usar pip normalmente. Las instalaciones solo afectarán a este entorno:

(mi_entorno) $ pip install requests
(mi_entorno) $ pip list

Ejemplo práctico: Creación de un proyecto con entorno virtual

Vamos a crear un pequeño proyecto que utilice la biblioteca requests para obtener información de una API:

  1. Creamos y activamos un entorno virtual:
python -m venv proyecto_api
cd proyecto_api
# Activamos según nuestro sistema operativo
  1. Instalamos las dependencias:
pip install requests
  1. Creamos un archivo consulta_api.py:
import requests

def obtener_datos(url):
    """Función para obtener datos de una API"""
    respuesta = requests.get(url)
    
    if respuesta.status_code == 200:
        return respuesta.json()
    else:
        print(f"Error: código de estado {respuesta.status_code}")
        return None

# URL de una API pública de ejemplo
url_api = "https://jsonplaceholder.typicode.com/posts/1"

# Obtenemos los datos
datos = obtener_datos(url_api)

# Mostramos los resultados
if datos:
    print("Datos obtenidos:")
    print(f"Título: {datos['title']}")
    print(f"Contenido: {datos['body']}")
  1. Ejecutamos nuestro script:
python consulta_api.py
  1. Generamos el archivo de requisitos para compartir el proyecto:
pip freeze > requirements.txt

Herramientas alternativas

Además de venv, existen otras herramientas populares para gestionar entornos virtuales:

  • virtualenv: Precursor de venv, compatible con versiones anteriores de Python
  • conda: Sistema de gestión de paquetes y entornos, popular en ciencia de datos
  • poetry: Herramienta moderna para gestión de dependencias y empaquetado
  • pipenv: Combina pip y virtualenv en una sola herramienta

Resumen

En este artículo hemos aprendido a utilizar pip para gestionar las dependencias de nuestros proyectos en Python, y a trabajar con entornos virtuales para aislar estas dependencias. Estas herramientas son fundamentales en el desarrollo profesional con Python, ya que nos permiten crear proyectos robustos y reproducibles. En el siguiente artículo, exploraremos cómo trabajar con fechas y tiempo utilizando el módulo datetime, una herramienta esencial para muchas aplicaciones prácticas.