Python

Python

Tutorial Python: Entornos virtuales (virtualenv, venv)

Aprende a crear y gestionar entornos virtuales en Python con venv y virtualenv para aislar dependencias y evitar conflictos en tus proyectos.

Aprende Python y certifícate

Concepto y necesidad de entornos virtuales

Los entornos virtuales en Python son espacios aislados donde puedes instalar paquetes y dependencias específicas para un proyecto sin afectar a la instalación global de Python en tu sistema. Funcionan como "contenedores" independientes que mantienen separados los requisitos de software de diferentes proyectos.

¿Por qué necesitamos entornos virtuales?

Imagina que estás trabajando en varios proyectos Python simultáneamente. El Proyecto A requiere Django 3.2, mientras que el Proyecto B necesita Django 4.2. Sin entornos virtuales, tendrías que instalar una versión u otra en tu sistema, lo que haría imposible trabajar en ambos proyectos sin cambiar constantemente las versiones instaladas.

Los entornos virtuales resuelven varios problemas fundamentales:

  • Conflictos de dependencias: Diferentes proyectos pueden requerir diferentes versiones de las mismas bibliotecas.

  • Aislamiento de proyectos: Cada proyecto mantiene sus propias dependencias sin interferir con otros.

  • Reproducibilidad: Facilitan la creación de entornos idénticos en diferentes máquinas, asegurando que el código funcione de manera consistente.

  • Limpieza del sistema: Evitan la acumulación de paquetes innecesarios en la instalación global de Python.

  • Gestión de versiones de Python: Permiten usar diferentes versiones de Python para distintos proyectos.

Tipos de herramientas para entornos virtuales

Python ofrece varias herramientas para crear y gestionar entornos virtuales:

  • venv: Módulo incluido en la biblioteca estándar desde Python 3.3. Es la opción recomendada para la mayoría de los usuarios.

  • virtualenv: Una herramienta externa más antigua que funciona con Python 2 y 3, con características adicionales.

  • conda: Sistema de gestión de paquetes y entornos que va más allá de Python, útil especialmente para ciencia de datos.

  • pipenv: Combina pip y virtualenv en una sola herramienta con gestión de dependencias mejorada.

  • poetry: Herramienta moderna para gestión de dependencias y empaquetado.

Cómo funcionan los entornos virtuales

Cuando creas un entorno virtual, se genera un directorio que contiene:

  1. Una copia o enlace simbólico al intérprete de Python
  2. Un directorio site-packages donde se instalarán los paquetes
  3. Scripts para activar y desactivar el entorno

Al activar un entorno virtual, se modifican temporalmente las variables de entorno del sistema para que:

python → apunte al intérprete del entorno virtual
pip → instale paquetes en el entorno virtual

Esto se refleja habitualmente en el prompt de la terminal, que muestra el nombre del entorno activo:

(mi_entorno) usuario@equipo:~$

Beneficios en el desarrollo profesional

En entornos de desarrollo profesional, los entornos virtuales son prácticamente obligatorios porque:

  • Facilitan la documentación de dependencias mediante archivos como requirements.txt o pyproject.toml
  • Permiten la integración continua y el despliegue automatizado
  • Mejoran la colaboración en equipo al garantizar que todos trabajan con el mismo entorno
  • Evitan el temido "en mi máquina funciona" al estandarizar los entornos

Mejores prácticas

Para aprovechar al máximo los entornos virtuales:

  • Crea un entorno virtual para cada proyecto, incluso si son pequeños
  • Incluye archivos de requisitos en el control de versiones, pero excluye la carpeta del entorno virtual (añádela a .gitignore)
  • Utiliza nombres descriptivos para tus entornos que reflejen el propósito del proyecto
  • Considera usar herramientas como pip-tools para bloquear versiones exactas de dependencias

Los entornos virtuales son una herramienta fundamental en el flujo de trabajo moderno de Python, y dominarlos es esencial para cualquier desarrollador que busque mantener proyectos organizados y libres de conflictos.

Creación y activación

Una vez comprendida la importancia de los entornos virtuales, el siguiente paso es aprender a crearlos y activarlos. Python ofrece varias herramientas para esto, pero nos centraremos en las dos más comunes y recomendadas: venv (incluido en la biblioteca estándar) y virtualenv (paquete externo).

Usando venv (recomendado)

El módulo venv viene integrado en Python desde la versión 3.3, lo que lo convierte en la opción más accesible y recomendada oficialmente. Para crear un entorno virtual con venv, sigue estos pasos:

  1. Crear el entorno virtual:
python -m venv nombre_entorno

Este comando creará un directorio con el nombre especificado que contendrá todos los archivos necesarios para el entorno virtual. Por ejemplo:

python -m venv mi_proyecto_env
  1. Activar el entorno virtual:

La activación varía según el sistema operativo:

  • En Windows (cmd):
nombre_entorno\Scripts\activate.bat
  • En Windows (PowerShell):
nombre_entorno\Scripts\Activate.ps1
  • En Unix o MacOS:
source nombre_entorno/bin/activate

Una vez activado, notarás que el prompt de la terminal cambia para mostrar el nombre del entorno entre paréntesis:

(mi_proyecto_env) usuario@equipo:~$
  1. Desactivar el entorno virtual:

Para salir del entorno virtual, simplemente ejecuta:

deactivate

Usando virtualenv

Aunque venv es suficiente para la mayoría de los casos, virtualenv ofrece algunas características adicionales y es compatible con versiones más antiguas de Python. Para usarlo:

  1. Instalar virtualenv (solo necesario una vez):
pip install virtualenv
  1. Crear el entorno virtual:
virtualenv nombre_entorno

O especificando una versión concreta de Python:

virtualenv -p python3.11 nombre_entorno
  1. Activar y desactivar el entorno virtual:

El proceso de activación y desactivación es idéntico al de venv.

Estructura de directorios

Al crear un entorno virtual, se genera una estructura de directorios similar a esta:

mi_proyecto_env/
├── bin/               # Scripts de activación (Unix/MacOS)
│   ├── activate
│   ├── pip
│   └── python
├── include/           # Archivos de cabecera C
├── lib/               # Bibliotecas y paquetes instalados
│   └── pythonX.Y/
│       └── site-packages/
└── pyvenv.cfg         # Configuración del entorno

En Windows, en lugar de bin/ encontrarás un directorio Scripts/.

Instalación de paquetes en el entorno

Una vez activado el entorno, puedes instalar paquetes que solo estarán disponibles dentro de él:

pip install nombre_paquete

Por ejemplo:

pip install requests

Gestión de dependencias

Para facilitar la reproducibilidad del entorno, es común guardar la lista de paquetes en un archivo requirements.txt:

  1. Generar el archivo con los paquetes instalados:
pip freeze > requirements.txt
  1. Recrear el entorno en otro lugar:
pip install -r requirements.txt

Ubicación recomendada

Es recomendable crear el entorno virtual dentro del directorio del proyecto:

mi_proyecto/
├── .git/
├── .gitignore          # Debe incluir "venv/" o "mi_proyecto_env/"
├── mi_proyecto_env/    # Entorno virtual
├── requirements.txt
└── src/                # Código fuente

Prácticas avanzadas

  • Nombrar entornos consistentemente: Usa nombres como .venv o venv para facilitar su identificación.

  • Usar variables de entorno: Crea un archivo .env para configuraciones específicas del entorno:

# .env
DEBUG=True
API_KEY=mi_clave_secreta
  • Automatizar la activación: Herramientas como direnv pueden activar automáticamente el entorno al entrar al directorio del proyecto.

  • Usar alias: Crea alias para comandos frecuentes:

# En .bashrc o .zshrc
alias venv='python -m venv .venv && source .venv/bin/activate'

Solución de problemas comunes

  • Error de permisos: Si encuentras errores de permisos al crear entornos, considera usar la opción --user con pip o revisar los permisos del directorio.

  • Entorno no se activa: Verifica que estás usando la ruta correcta al script de activación y que tienes permisos de ejecución.

  • Paquetes no disponibles: Asegúrate de que el entorno está activado antes de instalar o usar paquetes.

  • Conflictos de Python: Si tienes múltiples versiones de Python instaladas, especifica la versión al crear el entorno:

python3.11 -m venv mi_entorno

Con estos conocimientos, ya puedes crear y gestionar entornos virtuales para tus proyectos Python, manteniendo tus dependencias organizadas y evitando conflictos entre proyectos.

CONSTRUYE TU CARRERA EN IA Y PROGRAMACIÓN SOFTWARE

Accede a +1000 lecciones y cursos con certificado. Mejora tu portfolio con certificados de superación para tu CV.

30 % DE DESCUENTO

Plan mensual

19.00 /mes

13.30 € /mes

Precio normal mensual: 19 €
63 % DE DESCUENTO

Plan anual

10.00 /mes

7.00 € /mes

Ahorras 144 € al año
Precio normal anual: 120 €
Aprende Python online

Ejercicios de esta lección Entornos virtuales (virtualenv, venv)

Evalúa tus conocimientos de esta lección Entornos virtuales (virtualenv, venv) con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Módulo math

Python
Puzzle

Reto herencia

Python
Código

Excepciones

Python
Test

Introducción a Python

Python
Test

Reto variables

Python
Código

Funciones Python

Python
Puzzle

Reto funciones

Python
Código

Módulo datetime

Python
Test

Reto acumulación

Python
Código

Reto estructuras condicionales

Python
Código

Polimorfismo

Python
Test

Módulo os

Python
Test

Reto métodos dunder

Python
Código

Diccionarios

Python
Puzzle

Reto clases y objetos

Python
Código

Reto operadores

Python
Código

Operadores

Python
Test

Estructuras de control

Python
Puzzle

Funciones lambda

Python
Test

Reto diccionarios

Python
Código

Reto función lambda

Python
Código

Encapsulación

Python
Puzzle

Reto coleciones

Python
Proyecto

Reto funciones auxiliares

Python
Código

Crear módulos y paquetes

Python
Puzzle

Módulo datetime

Python
Puzzle

Excepciones

Python
Puzzle

Operadores

Python
Puzzle

Diccionarios

Python
Test

Reto map, filter

Python
Código

Reto tuplas

Python
Código

Proyecto gestor de tareas CRUD

Python
Proyecto

Tuplas

Python
Puzzle

Variables

Python
Puzzle

Tipos de datos

Python
Puzzle

Conjuntos

Python
Test

Reto mixins

Python
Código

Módulo csv

Python
Test

Módulo json

Python
Test

Herencia

Python
Test

Análisis de datos de ventas con Pandas

Python
Proyecto

Reto fechas y tiempo

Python
Proyecto

Reto estructuras de iteración

Python
Código

Funciones

Python
Test

Reto comprehensions

Python
Código

Variables

Python
Test

Reto serialización

Python
Proyecto

Módulo csv

Python
Puzzle

Reto polimorfismo

Python
Código

Polimorfismo

Python
Puzzle

Clases y objetos

Python
Código

Reto encapsulación

Python
Código

Estructuras de control

Python
Test

Importar módulos y paquetes

Python
Test

Módulo math

Python
Test

Funciones lambda

Python
Puzzle

Reto excepciones

Python
Código

Listas

Python
Puzzle

Reto archivos

Python
Proyecto

Encapsulación

Python
Test

Reto conjuntos

Python
Código

Clases y objetos

Python
Test

Instalación de Python y creación de proyecto

Python
Test

Reto listas

Python
Código

Tipos de datos

Python
Test

Crear módulos y paquetes

Python
Test

Tuplas

Python
Test

Herencia

Python
Puzzle

Reto acceso a sistema

Python
Proyecto

Proyecto sintaxis calculadora

Python
Proyecto

Importar módulos y paquetes

Python
Puzzle

Clases y objetos

Python
Puzzle

Módulo os

Python
Puzzle

Listas

Python
Test

Conjuntos

Python
Puzzle

Reto tipos de datos

Python
Código

Reto matemáticas

Python
Proyecto

Módulo json

Python
Puzzle

Todas las lecciones de Python

Accede a todas las lecciones de Python y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Introducción A Python

Python

Introducción

Instalación Y Creación De Proyecto

Python

Introducción

Tema 2: Tipos De Datos, Variables Y Operadores

Python

Introducción

Instalación De Python

Python

Introducción

Tipos De Datos

Python

Sintaxis

Variables

Python

Sintaxis

Operadores

Python

Sintaxis

Estructuras De Control

Python

Sintaxis

Funciones

Python

Sintaxis

Estructuras Control Iterativo

Python

Sintaxis

Estructuras Control Condicional

Python

Sintaxis

Testing Con Pytest

Python

Sintaxis

Listas

Python

Estructuras De Datos

Tuplas

Python

Estructuras De Datos

Diccionarios

Python

Estructuras De Datos

Conjuntos

Python

Estructuras De Datos

Comprehensions

Python

Estructuras De Datos

Clases Y Objetos

Python

Programación Orientada A Objetos

Excepciones

Python

Programación Orientada A Objetos

Encapsulación

Python

Programación Orientada A Objetos

Herencia

Python

Programación Orientada A Objetos

Polimorfismo

Python

Programación Orientada A Objetos

Mixins Y Herencia Múltiple

Python

Programación Orientada A Objetos

Métodos Especiales (Dunder Methods)

Python

Programación Orientada A Objetos

Composición De Clases

Python

Programación Orientada A Objetos

Funciones Lambda

Python

Programación Funcional

Aplicación Parcial

Python

Programación Funcional

Entrada Y Salida, Manejo De Archivos

Python

Programación Funcional

Decoradores

Python

Programación Funcional

Generadores

Python

Programación Funcional

Paradigma Funcional

Python

Programación Funcional

Composición De Funciones

Python

Programación Funcional

Funciones Orden Superior Map Y Filter

Python

Programación Funcional

Funciones Auxiliares

Python

Programación Funcional

Reducción Y Acumulación

Python

Programación Funcional

Archivos Comprimidos

Python

Entrada Y Salida Io

Entrada Y Salida Avanzada

Python

Entrada Y Salida Io

Archivos Temporales

Python

Entrada Y Salida Io

Contexto With

Python

Entrada Y Salida Io

Módulo Csv

Python

Biblioteca Estándar

Módulo Json

Python

Biblioteca Estándar

Módulo Datetime

Python

Biblioteca Estándar

Módulo Math

Python

Biblioteca Estándar

Módulo Os

Python

Biblioteca Estándar

Módulo Re

Python

Biblioteca Estándar

Módulo Random

Python

Biblioteca Estándar

Módulo Time

Python

Biblioteca Estándar

Módulo Collections

Python

Biblioteca Estándar

Módulo Sys

Python

Biblioteca Estándar

Módulo Statistics

Python

Biblioteca Estándar

Módulo Pickle

Python

Biblioteca Estándar

Módulo Pathlib

Python

Biblioteca Estándar

Importar Módulos Y Paquetes

Python

Paquetes Y Módulos

Crear Módulos Y Paquetes

Python

Paquetes Y Módulos

Entornos Virtuales (Virtualenv, Venv)

Python

Entorno Y Dependencias

Gestión De Dependencias (Pip, Requirements.txt)

Python

Entorno Y Dependencias

Python-dotenv Y Variables De Entorno

Python

Entorno Y Dependencias

Acceso A Datos Con Mysql, Pymongo Y Pandas

Python

Acceso A Bases De Datos

Acceso A Mongodb Con Pymongo

Python

Acceso A Bases De Datos

Acceso A Mysql Con Mysql Connector

Python

Acceso A Bases De Datos

Novedades Python 3.13

Python

Características Modernas

Operador Walrus

Python

Características Modernas

Pattern Matching

Python

Características Modernas

Instalación Beautiful Soup

Python

Web Scraping

Sintaxis General De Beautiful Soup

Python

Web Scraping

Tipos De Selectores

Python

Web Scraping

Web Scraping De Html

Python

Web Scraping

Web Scraping Para Ciencia De Datos

Python

Web Scraping

Autenticación Y Acceso A Recursos Protegidos

Python

Web Scraping

Combinación De Selenium Con Beautiful Soup

Python

Web Scraping

Accede GRATIS a Python y certifícate

En esta lección

Objetivos de aprendizaje de esta lección

  • Comprender qué son los entornos virtuales y por qué son necesarios en Python.
  • Aprender a crear, activar y desactivar entornos virtuales usando venv y virtualenv.
  • Conocer la estructura de directorios de un entorno virtual y cómo gestionar paquetes dentro de él.
  • Entender las mejores prácticas para el uso de entornos virtuales en proyectos profesionales.
  • Saber cómo documentar y reproducir entornos mediante archivos de dependencias como requirements.txt.