Domina la creación de entornos virtuales en Python con venv, pip y Visual Studio Code. Aprende a verificar tu instalación, crear y activar un entorno, instalar paquetes desde PyPI y fijar versiones con requirements.txt para compartir un proyecto de forma segura.
¿Cómo verificar Python y ubicar el ejecutable con which?
Antes de crear un entorno virtual, confirma que Python está instalado y localiza el ejecutable correcto. Verlo es clave cuando hay múltiples versiones o un alias a python3.
¿Qué comandos confirman la instalación?
Usa estos comandos en la terminal para verificar versión y ruta del ejecutable.
python --version
which python
which python3
Confirma la versión de Python instalada.
Identifica si python apunta a python3 como alias.
Comprueba el ejecutable real (por ejemplo, instalado con Homebrew en macOS).
¿Por qué importa el path cuando hay varios ejecutables?
Porque al activar un entorno virtual, el path del ejecutable cambia para apuntar al Python del entorno. Así evitas ejecutar paquetes del sistema por error. Verifica con which python3 antes y después de activar el entorno para notar la diferencia.
¿Cómo crear y activar un entorno virtual con venv?
Crear un entorno con -m venv aísla dependencias, manteniendo tu proyecto limpio y reproducible. Al ejecutarlo, se genera una carpeta con scripts y configuraciones propias del entorno.
¿Qué crea python -m venv y qué hay en las carpetas?
Ejecuta el módulo venv y nómbralo, por ejemplo newsemv.
python -m venv newsemv
Tras crearlo, verás:
bin/: ejecutables de Python, ejecutables de pip y scripts de activación para Linux y Windows.
include/: cabeceras de Python usadas durante instalaciones con pip.
lib/: librerías instaladas dentro del entorno; comienza vacío con solo pip.
Archivo de configuración: ruta del home y versión usados al ejecutar Python.
Idea clave: cada entorno nuevo inicia sin paquetes, listo para instalar solo lo necesario.
¿Cómo activar y desactivar el entorno virtual?
Activa y verifica que cambió el ejecutable a la ruta del entorno. Luego desactiva cuando termines.
Al activar, which muestra el path dentro de newsemv.
Al desactivar, which vuelve al ejecutable global (ejemplo: Homebrew).
Mantén claridad sobre qué entorno está activo para evitar errores.
¿Cómo ayuda Visual Studio Code con entornos?
La extensión de Python y el panel de Python Environments permiten seleccionar el entorno, ver dependencias e incluso activar automáticamente el entorno al abrir la terminal integrada. Útil para no equivocarte de intérprete.
¿Cómo instalar dependencias desde PyPI y fijar versiones con requirements.txt?
Instala paquetes desde PyPI, lista dependencias con pip y fija versiones con requirements.txt. Así otras personas pueden replicar tu entorno sin sorpresas.
¿Cómo instalar y listar paquetes con pip?
Busca en PyPI y copia el comando de instalación. Ejemplo con ruff (formateador de código):
pip install ruff
# verificar paquetes instaladosoverride
pip list
Instala desde PyPI la versión disponible.
Visualiza los paquetes presentes en tu entorno virtual.
¿Cómo compartir dependencias con requirements.txt?
Usa pip freeze para capturar la versión exacta instalada y compártela en un archivo.
# generar el archivo con versiones fijadaspip freeze > requirements.txt
# instalar desde el archivopip install -r requirements.txt
# desinstalar un paquete específicopip uninstall ruff -y
pip freeze exporta en formato paquete==versión para asegurar reproducibilidad.
pip install -r instala exactamente las versiones definidas.
Puedes reinstalar tras desinstalar para validar el flujo.
¿Qué buenas prácticas debes aplicar?
No subas la carpeta del entorno virtual al repo. Agrega el nombre del entorno a .gitignore.
Mantén versiones fijadas en requirements.txt para evitar roturas por actualizaciones.
Considera usar python-dotenv para gestionar tu API key fuera del código y protegerla.
¿Quieres que revisemos tu flujo con venv y requirements.txt o que comentemos alternativas con pip-tools o uv? Comparte tu experiencia y dudas en los comentarios.
Wow! Que buena clase, mira que siempre soy muy de buscar el por qué de las cosas, pero no se me había ocurrido investigar a fondo las carpetas internas creadas (mal ahí por mi curiosidad y muy bien por el profe jaja).
➡️ Si a alguien le da curiosidad entender a fondo como es que estos scripts funcionan y el entorno en general, le recomiendo además esta guía (no hace falta saber fastapi pero esta en español y lo explica bien):
Ademas de está clase en Mac también hicimos una clase muy buena en Windows!
Gracias por compartir la doc de fast api!
Orgullo de Latam también!
💡 TIP: Para no copiar y pegar en el archivo .txt la lista de dependencias que arroja el comando pip freeze, podemos utilizar el siguiente comando:
pip freeze > requirements.txt
El símbolo mayor que (>) toma la salida del comando que tiene a la izquierda y lo “pega” a un archivo, en este caso requierements.tx.
Al utilizar el comando anterior no es necesario crear previamente el archivo, si este no existe se crea en automático.
Problema con pip freeze y dependencias transitivas
El problema principal
Usar pip freeze para generar requirements.txt tiene un inconveniente importante: congela las versiones de todas las dependencias, incluyendo las dependencias transitivas (dependencias de tus dependencias).
Ejemplo práctico
Escenario
Instalas el paquete requests, que internamente depende de requests-a con la especificación:
requests-a>=3.0.0,<4.0.0
Lo que genera pip freeze
requests==2.31.0requests-a==3.0.0
¿Por qué es problemático?
Versión fijada innecesariamente: Has fijado requests-a==3.0.0 aunque no es tu dependencia directa
Pérdida de actualizaciones automáticas: Si requests-a libera la versión 3.5.0 con mejoras o correcciones:
❌ Con pip freeze: No recibirás la actualización porque fijaste la versión exacta
✅ Sin pip freeze: requests automáticamente usaría la versión óptima dentro del rango permitido (>=3, <4)
Control innecesario: Estás tomando decisiones sobre versiones de paquetes que tu dependencia principal ya gestiona correctamente
Recomendación
Lista solo tus dependencias directas en requirements.txt:
requests==2.31.0
Deja que cada paquete gestione sus propias dependencias dentro de sus rangos especificados. Así aprovechas las actualizaciones de seguridad y mejoras automáticamente.
Hola Paola, te agradezco por tu aporte. De hecho, yo también utilizaba el mismo comando, pero leí la contribución del profesor Luis Martínez y me dio curiosidad saber si había alguna herramienta que hiciera lo mismo de forma más eficiente. Encontré una llamada Poetry; al instalarla, puedes automatizar el guardado de tus dependencias de una manera más organizada. Te comparto este enlace por si quieres saber más: . Automatice el guardado de la lista de dependencias instaladas. te invito a seguir el enlace para que tengas mas información.
Vengo a hacer una autocorrección: la herramienta Poetry serviría en un entorno más dedicado y metódico. Sin embargo, más adelante el profe Luis Martínez enseña sobre un gestor de dependencias mucho más eficiente e inteligente para el desarrollo, llamado uv."
Para los que usan bash les comparto unos helpers que cree para manejar los entornos.. con solo ejecutar en venv-new en tu terminal.. crea y habilita el entorno virtual. Espero les sirva.
# ---Python venv helpers ---# Crea un nuevo entorno virtual .venv con Python3.14 y lo activa
venv-new(){if[-d ".venv"]; then
echo "Ya existe .venv en esta carpeta. Usa 'venv-on' para activarlo."return1 fi
python3.14-m venv .venv&& source .venv/bin/activate && echo "Entorno .venv creado y activado (Python $(python --version | cut -d' ' -f2))"}# Activa el .venv de la carpeta actual
venv-on(){if[-f ".venv/bin/activate"]; then
source .venv/bin/activate
else echo "No hay .venv en esta carpeta. Usa 'venv-new' para crear uno."return1 fi
}# Desactiva el entorno virtual actual
venv-off(){if[-n "$VIRTUAL_ENV"]; then
deactivate
else echo "No hay ningún entorno activo." fi
}
ya sabia del tema pero hoy etendí mejor que otras clases. Siempre se peude aprender algo nuevo
🐍✨Entornos Virtuales en Python
🎯 PROPÓSITO
Domina la creación y gestión de entornos virtuales con venv, pip y VS Code
👉 Mantén tus proyectos aislados, ordenados y reproducibles
⚙️ 1️⃣ Verificar Instalación de Python
🧩 Comandos esenciales
python --version
which python
which python3
🔍 Qué debes comprobar
✅ Versión instalada de Python
🧭 Si python → apunta a python3 (alias)
📍 Ubicación exacta del ejecutable (ej. Homebrew en macOS)
⚠️ Por qué importa:
El path del ejecutable cambia al activar el entorno virtual.
Así evitas usar paquetes del sistema.
👉 Compruébalo con which python3 antes y después de activar.
🧱 2️⃣ Crear un Entorno Virtual con venv
💻 Comando base
python -m venv nombre_entorno
Ejemplo:
python -m venv newsemv
📂 Estructura generada
🧠 bin/ → ejecutables de Python, pip y scripts
🧩 include/ → cabeceras necesarias
📦 lib/ → librerías internas del entorno (vacío al inicio)
⚙️ configuración → ruta del Python base y versión
💡 Cada entorno nuevo comienza limpio, sin paquetes.
🔄 3️⃣ Activar y Desactivar el Entorno
🟢 Activar (Linux/macOS):
source newsemv/bin/activate
🔎 Verificar rutas:
which python
which python3
🔴 Desactivar:
deactivate
🧭 Indicador visual:
🔹 Activo: el path apunta a la carpeta del entorno
🔹 Desactivado: vuelve al Python global
💻 4️⃣ Visual Studio Code y Entornos Virtuales
🧩 Extensión de Python en VS Code:
🎚 Selecciona el entorno activo
📋 Muestra y gestiona dependencias
⚙️ Activa el entorno automáticamente en la terminal integrada
💡 Ideal para evitar errores de intérprete o rutas incorrectas.
📦 5️⃣ Instalar y Listar Paquetes (pip)
🛠 Instalar desde PyPI
pip install ruff
📜 Ver paquetes instalados
pip list
👉 Los paquetes se instalan solo dentro del entorno virtual, sin afectar el sistema global.
📋 6️⃣ Guardar y Compartir Dependencias
💾 Guardar versiones exactas
pip freeze > requirements.txt
📥 Instalar desde archivo
pip install -r requirements.txt
❌ Desinstalar paquete
pip uninstall ruff -y
🔑 Recuerda:
pip freeze → exporta paquete==versión
pip install -r → reproduce exactamente ese entorno
🧠 Permite replicar tu configuración en cualquier equipo.
Algo no bueno en venv es que no especifica la version de python con la cual debe ser creado el entorno.
Sé que se puede hacer a mano en el requirements.txt pero es solo informativo, he visto en algunos archivos de requirements algo como
# Requires Python >=3.10
Sí, aunque se puede hacer en este curso no nos hemos adelantado a tal cosa. Apenas esté disponible el curso donde enseño esto te dejaré el link