Hay una estrategia que nos fue sugerida en Platzi para la gestión de ambientes virtuales para un Proyecto individual. Ésta se basa en trabajar con tres ambientes separados por áreas funcionales dentro de un proyecto de ciencia de datos! Es una técnica que algunos equipos utilizan para mantener un control más granular sobre las dependencias de cada etapa del flujo de trabajo. 🚀
Te explico cómo funciona y cuáles son las ventajas y desventajas de esta metodología 👇:
📚 Estrategia: Dividir un Proyecto en 3 Ambientes Virtuales
Esta estrategia propone crear tres ambientes Conda independientes dentro de un mismo proyecto, cada uno enfocado en una parte clave del proceso de ciencia de datos:
Ambiente
Propósito Principal
Ejemplos de Librerías
modelos
Entrenamiento y evaluación de modelos
scikit-learn, xgboost
externos
Conexión con bases de datos y APIs
psycopg2, requests
comunicación
Visualización y reportes
matplotlib, dash
Cada ambiente contiene únicamente las dependencias necesarias para esa parte específica del proyecto, lo que evita instalar paquetes innecesarios y reduce el riesgo de conflictos.
🎯 ¿Por qué dividir en 3 ambientes?
Esta estrategia surge para abordar un problema común:
👉 Los proyectos de ciencia de datos suelen tener dependencias muy variadas, desde librerías para el preprocesamiento de datos, hasta herramientas de visualización y comunicación. Tener todo en un solo ambiente puede hacer que este crezca demasiado y que sea más difícil de mantener.
Dividir el proyecto en 3 áreas funcionales permite:
✅ Reducir el tamaño de cada ambiente.
✅ Evitar conflictos entre paquetes (por ejemplo, evitar que un paquete de visualización como Plotly entre en conflicto con librerías de machine learning).
✅ Permitir la actualización independiente de cada ambiente.
🛠️ ¿Cómo implementar esta estrategia?
Supongamos que estás trabajando en un proyecto llamado prediccion_ventas. Aquí te dejo los pasos para aplicar esta estrategia:
🔧 1. Crea la estructura del proyecto
bash
Copiar código
/Mis_Proyectos/prediccion_ventas
├── modelos/
├── externos/
├── comunicacion/
├── src/
└── data/
Dentro de cada carpeta (modelos, externos, comunicacion), creas su propio ambiente Conda.
📂 2. Crea los 3 ambientes con Conda
📦 1. Ambiente modelos
bash
Copiar código
cd /Mis_Proyectos/prediccion_ventas/modelos
conda create --prefix ./env python=3.11 scikit-learn xgboost pandas
Este ambiente incluye todas las librerías relacionadas con el entrenamiento de modelos.
🌐 2. Ambiente externos
bash
Copiar código
cd /Mis_Proyectos/prediccion_ventas/externos
conda create --prefix ./env python=3.11 psycopg2 requests sqlalchemy
Este ambiente incluye librerías para conectarse a bases de datos y consumir APIs.
📊 3. Ambiente comunicacion
bash
Copiar código
cd /Mis_Proyectos/prediccion_ventas/comunicacion
conda create --prefix ./env python=3.11 matplotlib seaborn dash
Este ambiente incluye librerías para crear gráficos, dashboards y reportes.
🔄 3. Activa los ambientes según la necesidad
Cuando estés trabajando en una parte del proyecto, solo activas el ambiente correspondiente:
Para entrenar modelos:
bash
Copiar código
conda activate /Mis_Proyectos/prediccion_ventas/modelos/env
Para conectarte a una base de datos o API:
bash
Copiar código
conda activate /Mis_Proyectos/prediccion_ventas/externos/env
Para crear reportes o dashboards:
bash
Copiar código
conda activate /Mis_Proyectos/prediccion_ventas/comunicacion/env
💡 Ventajas de esta estrategia
✅ Modularidad: Puedes actualizar o cambiar librerías en un ambiente sin afectar los demás.
✅ Mejor rendimiento: Los ambientes son más ligeros porque contienen solo lo esencial.
✅ Mantenimiento sencillo: Si una parte del proyecto deja de funcionar, puedes aislar el problema en un ambiente específico.
⚠️ Desventajas de esta estrategia
❌ Mayor complejidad: Necesitas activar/desactivar ambientes varias veces durante un flujo de trabajo.
❌ Posible duplicación de paquetes: Algunos paquetes podrían necesitarse en más de un ambiente, lo que aumenta el espacio en disco.
🏷️ Cuándo usar esta estrategia
✅ Úsala si tu proyecto es grande o tiene múltiples etapas complejas.
✅ Ideal para proyectos colaborativos donde cada miembro del equipo trabaja en una parte específica.
❌ Evítala para proyectos pequeños o simples. En esos casos, un solo ambiente es más que suficiente.
Yo no sé tu, pero por el momento yo me quedaré trabajando con un solo ambiente virtual por proyecto.
Fuente: ChatGPT con un buen Prompt de mi parte.