¿Qué son los Entornos Virtuales?
Un entorno virtual es un directorio aislado que contiene una instalación de Python específica junto con paquetes adicionales. Permite tener diferentes versiones de paquetes para diferentes proyectos sin conflictos.
¿Por Qué Usar Entornos Virtuales?
- Aislamiento: Cada proyecto tiene sus propias dependencias
- Sin conflictos: Proyecto A usa Django 3.0, Proyecto B usa Django 4.0
- Reproducibilidad: Fácil compartir dependencias exactas
- Limpieza: No contaminas la instalación global de Python
- Testing: Prueba con diferentes versiones de paquetes
Ejemplo del Problema
# Sin entorno virtual:
# Proyecto A necesita Django 3.2
pip install Django==3.2
# Proyecto B necesita Django 4.2
pip install Django==4.2 # ¡Sobrescribe la 3.2!
# Ahora Proyecto A no funciona 😢
# Con entorno virtual:
# Cada proyecto tiene su propia versión ✅venv - Incluido en Python
venv viene incluido con Python 3.3+ y es la forma estándar de crear entornos virtuales.
Crear Entorno Virtual
# Sintaxis básica
python -m venv nombre_entorno
# Ejemplo común
python -m venv venv
# Otro ejemplo
python -m venv mi_proyecto_envActivar Entorno Virtual
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activate
# Verás (venv) en tu terminal:
# (venv) usuario@computadora:~/proyecto$Desactivar Entorno
# En cualquier sistema
deactivateFlujo Completo de Trabajo
# 1. Crear proyecto
mkdir mi_proyecto
cd mi_proyecto
# 2. Crear entorno virtual
python -m venv venv
# 3. Activar entorno
# Windows:
venv\Scripts\activate
# Linux/Mac:
source venv/bin/activate
# 4. Verificar Python (debe ser del entorno)
which python # Linux/Mac
where python # Windows
# 5. Instalar paquetes
pip install flask
pip install requests
pip install pandas
# 6. Ver paquetes instalados
pip list
# 7. Trabajar en tu proyecto...
# 8. Desactivar cuando termines
deactivaterequirements.txt - Compartir Dependencias
Crear requirements.txt
# Con entorno activado, exportar dependencias
pip freeze > requirements.txtContenido de requirements.txt
Flask==2.3.0
requests==2.31.0
pandas==2.0.3
numpy==1.24.3Instalar desde requirements.txt
# Otro desarrollador o en otro sistema
pip install -r requirements.txtEstructura de Proyecto Recomendada
mi_proyecto/
├── venv/ # Entorno virtual (no subir a Git)
├── src/ # Código fuente
│ ├── __init__.py
│ └── main.py
├── tests/ # Tests
│ └── test_main.py
├── requirements.txt # Dependencias
├── .gitignore # Ignorar venv/
└── README.md # DocumentaciónGit y Entornos Virtuales
.gitignore
# Entornos virtuales
venv/
env/
ENV/
.venv
# Python
__pycache__/
*.pyc
*.pyo
*.egg-info/
# IDEs
.vscode/
.idea/
# Otros
.env
*.logCompartir Proyecto
# Desarrollador A
git init
echo "venv/" > .gitignore
pip freeze > requirements.txt
git add .
git commit -m "Proyecto inicial"
git push
# Desarrollador B
git clone url-del-proyecto
cd proyecto
python -m venv venv
source venv/bin/activate # o venv\Scripts\activate en Windows
pip install -r requirements.txtvirtualenv - Alternativa más Flexible
# Instalar
pip install virtualenv
# Crear entorno
virtualenv nombre_entorno
# Con versión específica de Python
virtualenv -p python3.9 mi_env
# Activar (igual que venv)
source nombre_entorno/bin/activate # Linux/Mac
nombre_entorno\Scripts\activate # WindowsConda - Gestor de Paquetes y Entornos
# Instalar Miniconda o Anaconda primero
# Crear entorno
conda create -n mi_entorno python=3.11
# Activar
conda activate mi_entorno
# Instalar paquetes
conda install numpy pandas matplotlib
# O con pip
pip install flask
# Listar entornos
conda env list
# Desactivar
conda deactivate
# Eliminar entorno
conda env remove -n mi_entorno
# Exportar entorno
conda env export > environment.yml
# Crear desde archivo
conda env create -f environment.ymlComandos Útiles
Ver Información del Entorno
# Ver qué Python estás usando
which python # Linux/Mac
where python # Windows
# Ver versión
python --version
# Ver dónde está instalado
python -c "import sys; print(sys.executable)"
# Ver paquetes instalados
pip list
# Ver info de paquete específico
pip show flask
# Buscar paquete desactualizado
pip list --outdatedActualizar Paquetes
# Actualizar pip
python -m pip install --upgrade pip
# Actualizar paquete específico
pip install --upgrade nombre_paquete
# Actualizar todos (requiere pip-review)
pip install pip-review
pip-review --autoScripts de Automatización
Windows (setup.bat)
@echo off
echo Creando entorno virtual...
python -m venv venv
echo Activando entorno...
call venv\Scripts\activate
echo Actualizando pip...
python -m pip install --upgrade pip
echo Instalando dependencias...
pip install -r requirements.txt
echo Listo! Entorno configurado.
pauseLinux/Mac (setup.sh)
#!/bin/bash
echo "Creando entorno virtual..."
python3 -m venv venv
echo "Activando entorno..."
source venv/bin/activate
echo "Actualizando pip..."
pip install --upgrade pip
echo "Instalando dependencias..."
pip install -r requirements.txt
echo "¡Listo! Entorno configurado."
echo "Usa: source venv/bin/activate"Makefile para Proyectos
# Makefile
.PHONY: venv install test clean run
venv:
python -m venv venv
@echo "Entorno creado. Activa con: source venv/bin/activate"
install: venv
source venv/bin/activate && pip install -r requirements.txt
test:
source venv/bin/activate && pytest
clean:
rm -rf venv
rm -rf __pycache__
find . -type f -name '*.pyc' -delete
run:
source venv/bin/activate && python src/main.py# Usar
make venv # Crear entorno
make install # Instalar dependencias
make test # Ejecutar tests
make run # Ejecutar aplicación
make clean # LimpiarSolución de Problemas Comunes
Problema: No se puede activar en Windows
# Error de política de ejecución en PowerShell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# Luego activar
.\venv\Scripts\Activate.ps1Problema: pip no funciona
# Asegurarte de que el entorno esté activado
# Deberías ver (venv) en tu terminal
# Reinstalar pip en el entorno
python -m ensurepip --upgrade
# O actualizar
python -m pip install --upgrade pipProblema: Paquete no se encuentra
# Verificar que estés en el entorno correcto
which python
which pip
# Ver paquetes instalados
pip list
# Reinstalar paquete
pip uninstall nombre_paquete
pip install nombre_paqueteIntegración con IDEs
VS Code
// .vscode/settings.json
{
"python.defaultInterpreterPath": "${workspaceFolder}/venv/bin/python",
"python.terminal.activateEnvironment": true
}PyCharm
1. File → Settings → Project → Python Interpreter
2. Clic en engranaje → Add
3. Seleccionar Existing environment
4. Navegar a venv/bin/python (Linux/Mac) o venv\Scripts\python.exe (Windows)
Buenas Prácticas
- Un entorno por proyecto: No compartas entornos entre proyectos
- Nombre consistente: Usa siempre 'venv' o 'env'
- No subir a Git: Agrega venv/ a .gitignore
- requirements.txt actualizado: Genera después de instalar nuevos paquetes
- Documenta: Instrucciones claras en README.md
- Versiones específicas: En requirements.txt usa versiones exactas
- Activa antes de trabajar: Siempre verifica que esté activo
Ejemplo: Proyecto Flask Completo
# 1. Crear proyecto
mkdir flask-blog
cd flask-blog
# 2. Crear entorno
python -m venv venv
# 3. Activar
source venv/bin/activate # Linux/Mac
# o
venv\Scripts\activate # Windows
# 4. Instalar dependencias
pip install flask
pip install flask-sqlalchemy
pip install python-dotenv
# 5. Crear estructura
mkdir app templates static
touch app/__init__.py
touch app/routes.py
touch app/models.py
touch run.py
touch .env
touch .gitignore
# 6. Exportar dependencias
pip freeze > requirements.txt
# 7. Configurar .gitignore
echo "venv/" >> .gitignore
echo ".env" >> .gitignore
echo "__pycache__/" >> .gitignore
echo "*.pyc" >> .gitignore
# 8. Inicializar Git
git init
git add .
git commit -m "Configuración inicial del proyecto"Comandos Rápidos de Referencia
# Crear entorno
python -m venv venv
# Activar
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
# Desactivar
deactivate
# Instalar paquetes
pip install paquete
# Exportar dependencias
pip freeze > requirements.txt
# Instalar desde archivo
pip install -r requirements.txt
# Eliminar entorno
rm -rf venv # Linux/Mac
rmdir /s venv # WindowsConclusión
Los entornos virtuales son fundamentales para el desarrollo en Python. Te permiten mantener proyectos aislados, evitar conflictos de dependencias y facilitar la colaboración. Usar entornos virtuales es una práctica profesional estándar que todo desarrollador Python debe dominar. Siempre crea un entorno virtual para cada proyecto nuevo.