Entendiendo Ambientes Virtuales en Python

Stephanie Orellana

Un ambiente virtual es un espacio aislado donde puedes instalar paquetes específicos para un proyecto sin afectar otros proyectos o el sistema global

Importancia en el desarrollo con Python: evita conflictos de dependencias y asegura portabilidad

Herramientas más utilizadas

  • venv (integrado en Python)
  • virtualenv
  • pipenv
  • conda
  • poetry

Algunos conceptos clave

Fuente: Anna-Lena Popkes

Problemas comunes al no usar ambientes virtuales

  • Conflictos de versiones entre proyectos (ejemplo: un proyecto necesita Django 3.2 y otro Django 4.0).

  • Instalaciones globales que generan problemas en otros programas (esto es muy común cuando trabajamos con programas para datos geoespaciales!)

  • Necesito cambiar el computador con el que estoy trabajando y no sé cómo mover mi proyecto y todas sus dependencias.

Buenas prácticas

  • Organización de proyectos:
    • Crear un ambiente por proyecto para evitar conflictos.
    • Mantener dependencias actualizadas y específicas para el proyecto.
  • Uso de archivos requirements.txt:
    • Generar: pip freeze > requirements.txt
    • Instalar en otro entorno: pip install -r requirements.txt

Buenas prácticas

  • Nombres descriptivos para ambientes:
    • Ejemplo: “mi_proyecto_env” en lugar de solo “env”
  • Verificar al inicio que el ambiente esté activado
    • A veces hacemos pip install sin haber activado el ambiente y eso instala en el global.

Ejemplo Práctico: Crear y Usar un Ambiente Virtual con venv

Creación

Estando dentro de la carpeta del proyecto, en una terminal debemos escribir:

python -m venv mi_entorno

Se genera una carpeta con el nombre del entorno que contiene scripts, binarios, dependencias.

Activación y desactivación:

Activar

# Windows: 
mi_entorno\Scripts\activate

# macOS/Linux: 
source mi_entorno/bin/activate

Desactivar

deactivate

Instalar dependencias en el ambiente:

Instalar con pip

pip install pandas


Verificar paquetes instalados

pip list


Exportar en un archivo requirements.txt

pip freeze > requirements.txt