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:
- Creamos y activamos un entorno virtual:
python -m venv proyecto_api
cd proyecto_api
# Activamos según nuestro sistema operativo
- Instalamos las dependencias:
pip install requests
- 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']}")
- Ejecutamos nuestro script:
python consulta_api.py
- 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.