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: ¿donde van las librerias?
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 libreria "requests" version 2.28. El proyecto B necesita "requests" version 2.31. Si ambos usan la misma instalacion de Python, estan condenados a pelear por la version. 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 estanteria. Si metes uno, el otro desaparece. La solucion 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 librerias. Lo que instales en un venv no afecta a nada fuera de el. 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 que son los modulos (leccion 6) y como funcionan los imports, esto te hara sentido completo: un venv es basicamente un directorio con una copia de Python y una carpeta vacia donde pip instalara las librerias. Cuando activas el venv, tu terminal "redirige" los comandos python y pip para que apunten a esa copia local en vez de a la instalacion global del sistema.
### Crear y activar el venv — Windows vs Mac
Crear un venv es un comando. Activarlo es otro. El proceso es casi identico en ambos sistemas, con una diferencia clave: el comando de activacion. A partir de ahora, ANTES de instalar cualquier libreria con pip, siempre crearas y activaras 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. Activalo11.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 activacion 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. Activalo11source .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 activacion 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, activalo antes de instalar nada. Es como ponerse el cinturon antes de conducir — hazlo automaticamente.
### 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 esta en tu PATH. Ejecuta: eval "$(/opt/homebrew/bin/brew shellenv)" y luego intenta de nuevo.
- Ambos — "pip: command not found" dentro del venv: Asegurate de que el venv esta activado ((.venv) visible en el prompt).
- Ambos — Si tu venv se corrompe: borralo 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. Anade ".venv/" a tu archivo .gitignore. La carpeta contiene binarios especificos de tu sistema operativo y puede pesar cientos de MB. Lo que SI se sube es el archivo requirements.txt con la lista de dependencias (lo veras 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, estas bien. Si no lo ves, activalo primero (repasa la seccion anterior de esta leccion).
### 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 7.
- 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
Escribe un script que genere un archivo requirements.txt con las dependencias de un proyecto de datos. Incluye paquete, versión y un comentario de para qué sirve.
Pipeline configurable con .env
Crea un sistema de configuración que lea de un .env, aplique valores por defecto si faltan variables, y muestre la config activa. Simula cómo un pipeline real se configura.
Verificar dependencias instaladas
Escribe un script que verifique si las dependencias requeridas están instaladas. Para cada una, intenta importarla y reporta si está disponible o falta.
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...