Entornos virtuales y dependencias
Este es el primer ladrillo del PROYECTO FINAL del curso: «Tu entorno profesional listo y reproducible». Aquí dejamos lista la base sobre la que se apoyará todo lo demás (Git, GitHub, Docker): un entorno virtual con sus dependencias declaradas en un requirements.txt. Cuando termines este módulo, tu proyecto se podrá recrear en cualquier máquina con tres comandos.
¿Qué es?
Un entorno virtual (en inglés, virtual environment, abreviado venv) es una carpeta aislada que contiene su propia copia de Python y sus propias librerías. En lugar de instalar paquetes "para todo el sistema", los instalas dentro de esa carpeta, que pertenece solo a tu proyecto.
Imagina cada proyecto como una cocina independiente. Sin entornos virtuales, todos tus proyectos comparten la misma despensa: si el Proyecto A necesita la versión 1 de una librería y el Proyecto B la versión 2, se pisan entre sí. Con entornos virtuales, cada proyecto tiene su propia despensa cerrada. Lo que instalas en uno no afecta a los demás ni al Python del sistema.
¿Cómo funciona?
Python trae un módulo llamado venv que crea esa carpeta aislada. Al activar el entorno, el shell cambia temporalmente para que, cuando escribas python o pip, use los que viven dentro de esa carpeta y no los del sistema. Cuando lo desactivas, todo vuelve a la normalidad.
Las dependencias son las librerías externas que tu proyecto necesita para funcionar (por ejemplo requests o flask). Las instalas con pip, el gestor de paquetes de Python. Para que otra persona (o tu yo del futuro) pueda recrear el entorno exacto, "congelas" la lista de dependencias con sus versiones en un archivo de texto: el requirements.txt.
¿Para qué sirve?
- Reproducibilidad: cualquiera recrea tu entorno idéntico desde
requirements.txt. - Aislamiento: no rompes un proyecto al actualizar librerías de otro.
- Limpieza: el Python del sistema queda intacto; si algo se corrompe, borras la carpeta del entorno y empiezas de cero.
- Colaboración: el equipo trabaja con las mismas versiones, sin el clásico "en mi máquina funciona".
Construyamos esta pieza del proyecto
Paso 1: crea la carpeta del proyecto
mkdir mi-entorno-pro
cd mi-entorno-pro
Paso 2: crea el entorno virtual
Usamos python3 -m venv seguido del nombre de la carpeta. Por convención se llama .venv (el punto la oculta y es un estándar que muchas herramientas reconocen).
python3 -m venv .venv
Esto crea una carpeta .venv/ con una copia de Python y la infraestructura de pip. Todavía no ha pasado nada "mágico": solo existe la carpeta.
Paso 3: actívalo
El comando de activación depende de tu sistema operativo.
macOS y Linux (Bash/Zsh):
source .venv/bin/activate
Windows (PowerShell):
.venv\Scripts\Activate.ps1
Windows (CMD):
.venv\Scripts\activate.bat
Sabrás que funcionó porque el prompt cambia y aparece (.venv) al principio de la línea. Verifícalo:
which python # macOS/Linux: debe apuntar a .../mi-entorno-pro/.venv/bin/python
where python # Windows
La carpeta .venv no se sube a Git (la añadiremos a .gitignore en el módulo de GitHub). Lo que se comparte es el requirements.txt, no el entorno en sí: cada quien recrea el suyo.
Si en Windows PowerShell ves un error de "scripts deshabilitados", ejecuta una vez: Set-ExecutionPolicy -Scope CurrentUser RemoteSigned. Es un ajuste de seguridad de Windows, no un fallo de Python.
Paso 4: instala dependencias
Con el entorno activo, instala lo que tu proyecto necesite. Para el ejemplo, dos librerías muy comunes:
pip install requests rich
pip descarga e instala los paquetes dentro de .venv, no en tu sistema. Comprueba qué hay instalado:
pip list
Tech English: to freeze dependencies significa "congelar" las versiones exactas que tienes ahora, para que el entorno sea reproducible bit a bit.
Paso 5: congela el requirements.txt
pip freeze > requirements.txt
pip freeze imprime cada paquete instalado con su versión exacta (requests==2.32.3), y el > guarda esa salida en el archivo. Ábrelo y verás algo así:
certifi==2024.7.4
charset-normalizer==3.3.2
requests==2.32.3
rich==13.7.1
Este archivo sí se sube a Git: es la receta del entorno.
Paso 6: recrear el entorno (la prueba de fuego)
En otra máquina, o tras borrar .venv, basta con:
python3 -m venv .venv
source .venv/bin/activate # o el comando de Windows
pip install -r requirements.txt
pip install -r lee el archivo e instala exactamente esas versiones. Eso es reproducibilidad.
Para salir del entorno sin cerrar la terminal: deactivate. El prompt vuelve a la normalidad.
Error clásico: instalar paquetes sin activar el entorno y luego no entender por qué el requirements.txt sale vacío o lleno de basura. Antes de pip install, confirma que ves (.venv) en el prompt.
Ejercicios
- Crea un proyecto nuevo llamado
practica-venv, activa su entorno virtual, instala las libreríasflaskypython-dotenv, congela elrequirements.txty muéstralo. Luego borra la carpeta.venv, recréala desde elrequirements.txty verifica conpip listque quedó idéntico. - Crea dos proyectos distintos con dos entornos separados. En uno instala
rich==13.0.0y en el otrorich==13.7.1. Activa cada uno y ejecutapip show richpara comprobar que conviven versiones diferentes sin pisarse.