Gestión de paquetes de Python con pip y entornos virtuales
Al finalizar este tema
Instalará paquetes con pip, separará los entornos por proyecto mediante un entorno virtual (venv) y podrá reproducir el entorno utilizando requirements.txt.
¿Por qué usar paquetes?
Aunque con las funciones básicas de Python se puede hacer mucho, las funcionalidades que se necesitan con frecuencia en el análisis de datos biológicos ya han sido desarrolladas por otros programadores:
| Tarea | Paquete | Analogía |
|---|---|---|
| Procesamiento de datos tabulares | pandas | La versión de Python de Excel |
| Creación de gráficos | matplotlib | Generador de figuras para artículos científicos |
| Cálculos matemáticos/estadísticos | numpy, scipy | Software estadístico |
| Análisis de ADN/proteínas | biopython | Conjunto de herramientas para el análisis de secuencias |
| Solicitudes HTTP | requests | Para realizar llamadas a la API de NCBI |
Así como no sintetiza cada reactivo, sino que lo pide de un catálogo, los paquetes también se instalan mediante pip en lugar de crearlos directamente.
pip: Instalación de paquetes
pip es el gestor de paquetes de Python. Se ejecuta desde la terminal:
# Instalación de paquetespip install pandas
# Instalación de una versión específicapip install pandas==2.2.0
# Instalación de varios paquetes a la vezpip install numpy matplotlib scipy
# Verificar la lista de paquetes instaladospip list
# Desinstalar paquetepip uninstall pandasEn Google Colab, para ejecutar una celda, se debe agregar ! al principio de la celda: !pip install biopython
import: usar los paquetes instalados
Los paquetes instalados se importan en el código mediante import:
import numpy as npimport pandas as pdimport matplotlib.pyplot as plt
data = np.array([1.2, 3.5, 2.8, 4.1, 3.9])mean_val = np.mean(data)print(f"Valor medio de OD: {mean_val:.2f}")
assert abs(mean_val - 3.1) < 0.01as np es un alias. Se puede abreviar numpy.mean() como np.mean(). np, pd y plt son alias estándar que utilizan los desarrolladores de todo el mundo.
¿Por qué necesitamos entornos virtuales?
Si el proyecto A requiere pandas 1.5 y el proyecto B requiere pandas 2.2, no se pueden instalar ambas versiones simultáneamente en una única instalación de Python.
Analogía del laboratorio: cada experimento utiliza un conjunto diferente de reactivos. Si se almacenan los reactivos para Western Blot y ELISA en el mismo lugar, se genera confusión. Separar los reactivos por experimento ayuda a mantener el orden.
Entorno virtual = conjunto de reactivos por proyecto
Creación de un entorno virtual con venv
Se utiliza el módulo integrado estándar de Python venv:
# 1. Crear entorno virtual (dentro de la carpeta del proyecto)python3 -m venv .venv
# 2. Activar el entorno virtual# Mac/Linux:source .venv/bin/activate# Windows:.venv\Scripts\activate
# 3. Verificar activación — aparece (.venv) al inicio del prompt(.venv) $ which python# → /ruta-del-proyecto/.venv/bin/python
# 4. Instalar paquetes en este entornopip install pandas numpy matplotlib
# 5. Desactivar (al cambiar a otro proyecto)deactivateAl activarse, pip install instala los paquetes solo en el entorno virtual especificado. No afecta a otros proyectos.
requirements.txt: replicación del entorno
"Funciona en mi computadora, pero no en la de mis compañeros" — este es uno de los problemas más comunes en el desarrollo. requirements.txt soluciona este problema.
# Guarda la lista de paquetes del entorno actual en un archivopip freeze > requirements.txtGenerado requirements.txt:
numpy==1.26.4
pandas==2.2.0
matplotlib==3.8.3
scipy==1.12.0Cuando un colega reciba este archivo:
# Después de crear y activar el entorno virtualpip install -r requirements.txtSe reproduce exactamente el mismo entorno de paquetes con una sola línea de código. Es el mismo principio que anotar los números de catálogo de los reactivos en un protocolo experimental; es la clave para la reproducibilidad.
conda: gestor de paquetes para la investigación científica
conda es similar a pip, pero puede gestionar no solo paquetes de Python, sino también bibliotecas C y paquetes de R. En bioinformática, conda es más utilizado:
# Crear entorno condaconda create -n bioanalysis python=3.12
# Activar entornoconda activate bioanalysis
# Instalar paquetes (canal bioconda)conda install -c bioconda biopython samtools
# Verificar lista de entornosconda env list
# Exportar entorno (para reproducibilidad)conda env export > environment.yml| pip + venv | conda | |
|---|---|---|
| Instalación | Solo paquetes de Python | Python + C/R + herramientas binarias |
| Gestión del entorno | Separado (venv) | Integrado (conda create) |
| Herramientas bioinformáticas | Limitado | Amplio, con el canal bioconda |
| Tamaño | Ligero | Pesado (se recomienda Miniconda) |
| Escenarios recomendados | Desarrollo web, análisis ligero | Bioinformática, análisis a gran escala |
Comience con pip + venv y, si necesita herramientas bioinformáticas como samtools o BLAST, cambie a conda.
Prueba práctica (Ejemplo con texto atenuado)
Complete los espacios en blanco a continuación para crear un entorno virtual e instalar paquetes.
Crear entorno virtualpython3 -m .venv# Activación (Mac/Linux).venv/bin/activate# Instalación de paquetespip install pandas numpy# Guardar entorno actualpip freeze > .txt
Errores comunes y soluciones
P: Tengo el error ModuleNotFoundError: No module named 'pandas'
Es posible que los paquetes no estén instalados o que estén instalados en un entorno Python diferente. Use which python para verificar qué versión de Python está usando actualmente. También verifique si ha activado el entorno virtual.
P: Hice pip install, pero import no funciona
Es posible que el terminal pip y Python en Jupyter Notebook estén usando entornos diferentes. En Jupyter, ejecute !pip install pandas en una celda y luego reinicie el kernel.
P: ¿Cuál es la diferencia entre pip y pip3?
pip es para Python básico y pip3 es solo para Python 3. Si tiene instaladas tanto Python 2 como Python 3 en su sistema, es necesario distinguirlos. Dentro de un entorno virtual, pip siempre está vinculado a la versión de Python de ese entorno, por lo que no es necesario distinguirlos.
P: ¿Puedo subir la carpeta .venv a Git?
No debe hacerlo. .venv contiene archivos binarios de paquetes que pueden ocupar cientos de MB. Agregue .venv/ a .gitignore y suba solo requirements.txt a Git. Sus compañeros pueden crear su propio entorno con requirements.txt.