Juan Diego Andrés PRADA··RAMÍREZ Entrar
Lección 2 de 7

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 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

  1. Crea un proyecto nuevo llamado practica-venv, activa su entorno virtual, instala las librerías flask y python-dotenv, congela el requirements.txt y muéstralo. Luego borra la carpeta .venv, recréala desde el requirements.txt y verifica con pip list que quedó idéntico.
  2. Crea dos proyectos distintos con dos entornos separados. En uno instala rich==13.0.0 y en el otro rich==13.7.1. Activa cada uno y ejecuta pip show rich para comprobar que conviven versiones diferentes sin pisarse.
Tu progreso se guarda en este navegador. Inicia sesión para guardarlo en tu cuenta y verlo desde cualquier dispositivo.