lección 8
pip install: usar herramientas de otros
Crear un entorno virtual aislado, instalar librerías externas con pip, gestionar dependencias con requirements.txt y entender PyPI.
⏱ 60 min
La biblioteca estándar de Python es potente, pero el verdadero superpoder está en la comunidad. Hay más de 500,000 paquetes disponibles en PyPI (Python Package Index) — librerías que otros ingenieros han escrito, probado y publicado para que tú no tengas que reinventar la rueda. Pandas, requests, pytest, black, pyspark... todo se instala con pip.
Piensa en pip como la app store de Python. ¿Necesitas manipular tablas de datos? pip install pandas. ¿Necesitas llamar a una API? pip install requests. ¿Necesitas testear tu código? pip install pytest. En 10 segundos tienes herramientas que costaron miles de horas construir.
### Pero antes de instalar nada: ¿dónde van las librerías?
Antes de lanzarte a hacer pip install, necesitas entender un problema fundamental. Imagina que tienes dos proyectos en tu ordenador. El proyecto A necesita la librería "requests" versión 2.28. El proyecto B necesita "requests" versión 2.31. Si ambos usan la misma instalación de Python, están condenados a pelear por la versión. Alguien pierde.
Este es el equivalente a tener una cocina compartida donde dos chefs necesitan aceite de oliva — pero uno necesita virgen extra y el otro de girasol, y solo hay un hueco en la estantería. Si metes uno, el otro desaparece. La solución es que cada chef tenga SU propia despensa. En Python, esa despensa privada se llama entorno virtual (venv).
### Entornos virtuales: tu burbuja aislada
Un entorno virtual (venv) es una copia aislada de Python dentro de tu proyecto. Cada proyecto tiene su propio venv con sus propias librerías. Lo que instales en un venv no afecta a nada fuera de él. Es como tener un taller limpio para cada proyecto, sin que las herramientas de uno se mezclen con las del otro.
Ahora que ya sabes qué son los módulos (lección 6) y cómo funcionan los imports, esto te hará sentido completo: un venv es básicamente un directorio con una copia de Python y una carpeta vacía donde pip instalará las librerías. Cuando activas el venv, tu terminal "redirige" los comandos python y pip para que apunten a esa copia local en vez de a la instalación global del sistema.
### Crear y activar el venv — Windows vs Mac
Crear un venv es un comando. Activarlo es otro. El proceso es casi idéntico en ambos sistemas, con una diferencia clave: el comando de activación. A partir de ahora, ANTES de instalar cualquier librería con pip, siempre crearás y activarás un venv.
1# 🟦 Windows (PowerShell)23# 1. Crea una carpeta para tu proyecto4mkdir mi-proyecto-datos5cd mi-proyecto-datos67# 2. Crea el entorno virtual8python -m venv .venv910# 3. Actívalo11.venv\Scripts\Activate.ps11213# 4. Tu prompt cambia:14# (.venv) PS C:\Users\tu_usuario\mi-proyecto-datos>1516# 5. Verifica que python apunta al venv17python --version18# Python 3.12.4
Windows: la activación usa Activate.ps1 (PowerShell)
1# 🍎 Mac (Terminal)23# 1. Crea una carpeta para tu proyecto4mkdir mi-proyecto-datos5cd mi-proyecto-datos67# 2. Crea el entorno virtual8python3 -m venv .venv910# 3. Actívalo11source .venv/bin/activate1213# 4. Tu prompt cambia:14# (.venv) usuario@mac mi-proyecto-datos %1516# 5. Verifica que python apunta al venv17python --version18# Python 3.12.4
Mac: la activación usa source .venv/bin/activate
Una vez activado el venv, el comando es "python" y "pip" en AMBOS sistemas (no necesitas python3 ni pip3 en Mac). Esa es una gran ventaja: dentro del venv, todo es uniforme. Cuando termines de trabajar, escribe "deactivate" para salir del venv.
Regla de oro del profesional: NUNCA hagas pip install sin un venv activo. Si tu terminal no muestra (.venv) antes del prompt, actívalo antes de instalar nada. Es como ponerse el cinturón antes de conducir — hazlo automáticamente.
### Posibles problemas con el venv
- Windows — "Execution Policy": Si PowerShell dice que no puede ejecutar scripts, ejecuta: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser y confirma con S.
- Mac — "command not found: python3": Homebrew no está en tu PATH. Ejecuta: eval "$(/opt/homebrew/bin/brew shellenv)" y luego intenta de nuevo.
- Ambos — "pip: command not found" dentro del venv: Asegúrate de que el venv está activado ((.venv) visible en el prompt).
- Ambos — Si tu venv se corrompe: bórralo y crea uno nuevo. Remove-Item -Recurse .venv (Win) o rm -rf .venv (Mac), luego recrea con python -m venv .venv.
La carpeta .venv NO se sube a Git. Añade ".venv/" a tu archivo .gitignore. La carpeta contiene binarios específicos de tu sistema operativo y puede pesar cientos de MB. Lo que SÍ se sube es el archivo requirements.txt con la lista de dependencias (lo verás en unos minutos).
### ¿Qué es pip y cómo funciona?
pip es el gestor de paquetes de Python. Viene incluido con Python desde la versión 3.4. Su trabajo es: descargar paquetes de internet (de PyPI por defecto), instalarlos en tu entorno y gestionar las dependencias entre paquetes.
1# 🟦 Windows (PowerShell) — con venv activo2pip install requests3pip install pandas45# 🍎 Mac (Terminal) — con venv activo6pip install requests7pip install pandas89# (Dentro del venv, "pip" funciona igual en ambos sistemas)1011# Instalar una versión específica12pip install requests==2.31.01314# Instalar versión mínima15pip install "requests>=2.28"1617# Ver qué tienes instalado18pip list1920# Ver detalles de un paquete21pip show requests
Dentro del venv, pip funciona igual en Windows y Mac.
Recuerda: todo pip install que hagas debe ser dentro de tu venv activo. Si ves (.venv) en el prompt, estás bien. Si no lo ves, actívalo primero (repasa la sección anterior de esta lección).
### requirements.txt: la receta de tu proyecto
Cuando compartes tu proyecto con alguien (o contigo mismo en otro ordenador), esa persona necesita instalar las mismas librerías. El archivo requirements.txt es la lista de ingredientes — le dice a pip exactamente qué instalar y en qué versión.
1# Generar requirements.txt con lo que tienes instalado2pip freeze > requirements.txt34# El archivo contiene algo como:5# requests==2.31.06# pandas==2.1.47# numpy==1.26.289# Instalar todo desde requirements.txt (otro dev, otro PC)10pip install -r requirements.txt
pip freeze captura tu entorno. pip install -r lo recrea exactamente.
pip freeze captura TODAS las dependencias, incluidas las transitivas (las que se instalaron automáticamente). Para proyectos serios, considera escribir requirements.txt manualmente solo con tus dependencias directas. Así controlas qué usas y evitas sorpresas.
### Librerías esenciales para ingeniería de datos
No necesitas instalarlas todas hoy — las irás incorporando en las siguientes skills. Pero es bueno saber qué existe:
- pandas — Manipulación de datos tabulares (DataFrames). La usarás MUCHO en Skill 9.
- requests — Llamar APIs HTTP. Imprescindible para extraer datos de servicios web.
- pytest — Framework de testing. Tus pipelines necesitan tests.
- python-dotenv — Cargar variables de entorno desde .env. Para configuración sensible.
- pyyaml — Leer/escribir archivos YAML (configuración de pipelines complejos).
- black — Formateador automático de código. Mantiene tu código consistente.
- mypy — Verificador de tipos estáticos. Atrapa errores antes de ejecutar.
### Tu primer script con librerías externas
Vamos a instalar python-dotenv (para manejar configuración) y a usarla en un script. Este patrón lo verás en TODOS los proyectos profesionales:
1# Instala python-dotenv (dentro de tu venv)2pip install python-dotenv
Un solo comando para instalar la librería.
1# Primero crea un archivo .env con configuración2# (este archivo NO se sube a git — contiene secretos)3import os45# Simular un .env escribiéndolo6with open(".env", "w") as f:7 f.write("RUTA_DATOS=data/ventas.csv\n")8 f.write("UMBRAL_VIP=500\n")9 f.write("MODO=desarrollo\n")1011# Ahora usar dotenv para cargar esas variables12from dotenv import load_dotenv1314load_dotenv() # Carga las variables del .env al entorno1516# Leer las variables17ruta = os.getenv("RUTA_DATOS")18umbral = int(os.getenv("UMBRAL_VIP", "100")) # 100 es el default19modo = os.getenv("MODO")2021print(f"Ruta de datos: {ruta}")22print(f"Umbral VIP: {umbral}€")23print(f"Modo: {modo}")2425if modo == "desarrollo":26 print("⚠️ Ejecutando en modo desarrollo")
dotenv carga config del .env — secretos y parámetros fuera del código.
Consejo de senior: NUNCA pongas credenciales, passwords o API keys directamente en tu código Python. Usa variables de entorno (con dotenv o directamente). Si subes un secreto a Git por accidente, considéralo comprometido — rota la credencial inmediatamente.
### Resolver problemas de instalación
- 🟦 Windows — Si pip falla con permisos, asegúrate de que PowerShell NO es administrador cuando trabajas con venvs.
- 🍎 Mac — Si pip install falla con errores de compilación, instala Xcode Command Line Tools: xcode-select --install
- Ambos — "Could not find a version that satisfies": el paquete no existe o escribiste mal el nombre. Búscalo en pypi.org.
- Ambos — Si tu venv se corrompe: bórralo y crea uno nuevo. rm -rf .venv (Mac) o Remove-Item -Recurse .venv (Windows), luego recrea.
- Ambos — Actualizar pip: python -m pip install --upgrade pip
## ejercicios
Crear requirements.txt manual
Genera un requirements.txt con las dependencias del proyecto. El formato de cada línea es: paquete==version # comentario (ojo: dos espacios antes de la almohadilla).
💡 Resultado esperado
# Dependencias del proyecto pipeline-ventas pandas==2.1.4 # Manipulación de datos tabulares requests==2.31.0 # Llamadas HTTP a APIs python-dotenv==1.0.0 # Variables de entorno desde .env
Pipeline configurable con .env
Carga la configuración del pipeline con valores por defecto para las variables que no estén definidas. Los cuatro nombres de variable ya están escritos; pon el valor por defecto correcto en cada uno.
💡 Resultado esperado
Configuración del pipeline: nombre: ventas-diarias umbral: 250 modo: desarrollo
Verificar dependencias instaladas
Intenta importar cada módulo de la lista. Si falla, reporta que falta. La cláusula except ImportError ya está puesta; el truco es cómo importar un módulo cuyo nombre está en una variable.
Regístrate para guardar tu progreso.
## comentarios
Reporta erratas, ayuda a otros o comparte tu opinión. Sé constructivo.
Inicia sesión para comentar y responder.
cargando comentarios...