Gestionar y confugurar un entorno virtual¶
Cuando instalamos Python3, se crea un único entorno global compartido por todos los proyectos y todo el código de Python. Aunque es posible instalar Django y otros paquetes en el entorno global, esto limita la posibilidad de gestionar múltiples versiones de cada paquete.
Cuidado al trabajar en el entorno global
Los paquetes instalados globalmente pueden generar conflictos entre versiones, especialmente al trabajar con varios proyectos que requieren diferentes versiones de una misma biblioteca.
Como resultado, los desarrolladores experimentados suelen configurar y ejecutar las aplicaciones Python dentro de entornos virtuales de Python independientes.
¿Qué es un Entornos Virtual de Python?¶
Un entorno virtual en Python es una instancia aislada que se crea a partir de una copia de nuestro Python global. Su principal ventaja es que permite trabajar de forma ordenada en un proyecto específico, utilizando únicamente los módulos y librerías necesarios para ese caso, sin afectar a otros proyectos ni a la instalación global del sistema.
A continuación, se muestra un ejemplo de cómo luce un entorno virtual, lo que nos ayudará a comprender mejor su finalidad.
graph LR
subgraph EG["Entorno global"]
B(<img width='19' height='100' src="../../assets/images/base.webp" class="python-icon" />Python 3.9)
end
B --> T["Crear entornos virtuales independientes"]
T --> C(<img width='19' height='100' src="../../assets/images/venv1.webp" />Entorno 1)
T --> D(<img width='19' height='100' src="../../assets/images/venv2.webp" />Entorno 2)
T --> E(<img width='19' height='100' src="../../assets/images/venv3.webp" />Entorno 3)
subgraph CI["Entornos aislados con dependencias específicas"]
C --> CD["Django 2.0"]
D --> DD["Django 3.2"]
E --> ED["Django 5.1"]
end
Gestionar un Entorno Virtual¶
Existen varias herramientas para crear y gestionar entornos virtuales en Python. No hay un número único, pero estas son las principales que conviene conocer.
Herramientas más utilizadas¶
| Herramienta | Descripción | Comando habitual |
|---|---|---|
venv |
Módulo estándar de Python; en Linux puede requerir instalación adicional. | python -m venv .venv |
virtualenv |
Alternativa a venv, con compatibilidad adicional. |
virtualenv .venv |
Pipenv |
Combina entornos virtuales y gestión de dependencias. | pipenv install |
Poetry |
Gestiona dependencias, entornos y empaquetado de proyectos. | poetry install |
uv |
Herramienta rápida para Python; gestiona versiones, entornos y dependencias. | uv venv |
Info
Ten presente que no todas estas herramientas son equivalentes: algunas crean entornos virtuales y otras también administran dependencias, versiones de Python y empaquetado.
Administrar entornos con venv¶
El paquete venv ya forma parte de la biblioteca estándar de Python desde la versión 3.3. Viene habitualmente incluido en la instalación estándar de Python en Windows, mientras que en algunas distribuciones de Linux puede requerir la instalación de un paquete por separado.
Para comprobarlo, ejecuta el siguiente comando:
python -m venv --help
python3 -m venv --help
python -m venv --help
usage: python -m venv [-h] [--system-site-packages] [--symlinks |
--copies] [--clear] [--upgrade]
[--without-pip] [--prompt PROMPT]
[--upgrade-deps] [--without-scm-ignore-files]
ENV_DIR [ENV_DIR ...]
Creates virtual Python environments in one or more target
directories.
positional arguments:
ENV_DIR A directory to create the environment in.
options:
-h, --help show this help message and exit
--system-site-packages
Give the virtual environment access to the
system site-packages dir.
--symlinks Try to use symlinks rather than copies, when
symlinks are not the default for the
platform.
--copies Try to use copies rather than symlinks, even
when symlinks are the default for the
platform.
--clear Delete the contents of the environment
directory if it already exists, before
environment creation.
--upgrade Upgrade the environment directory to use
this version of Python, assuming Python has
been upgraded in-place.
--without-pip Skips installing or upgrading pip in the
virtual environment (pip is bootstrapped by
default)
--prompt PROMPT Provides an alternative prompt prefix for
this environment.
--upgrade-deps Upgrade core dependencies (pip) to the
latest version in PyPI
--without-scm-ignore-files
Skips adding SCM ignore files to the
environment directory (Git is supported by
default).
Once an environment has been created, you may wish to activate it,
e.g. by sourcing an activate script in its bin directory.
En caso de no tener instalado venv, puedes usar los siguientes comandos:
sudo apt update
sudo apt install python3-venv
sudo dnf install python3
Para gestionar un entorno virtual usando el paquete venv, ubicate en la carpeta donde quieres configurarlo y sigue los pasos según tu plataforma:
Administrar entornos con venv
1. Crear Entorno Virtual
python -m venv .venv
2. Activar el Entorno Virtual
.venv\Scripts\activate.bat
3. Desactivar el Entorno Virtual
(.venv) deactivate
4. Limpiar el Entorno Virtual (recrearlo desde 0)
python -m venv --clear .venv
1. Crear Entorno Virtual
python3 -m venv .venv
2. Activar el Entorno Virtual
source .venv/bin/activate
3. Desactivar el Entorno Virtual
(.venv) deactivate
4. Limpiar el Entorno Virtual (recrearlo desde 0)
python3 -m venv --clear .venv
Nombre del entorno
Se recomienda utilizar venv o .venv como nombre del entorno virtual. La opción .venv es habitual porque se considera una carpeta oculta en sistemas Unix y ayuda a mantenerla separada del código del proyecto.
Administrar entornos con virtualenv¶
virtualenv es una herramienta alternativa a venv que permite crear y gestionar entornos virtuales aislados de Python. A diferencia de venv, que viene incluido en Python desde la versión 3.3, virtualenv se instala por separado y ofrece la creación más rápida de entornos.
Para instalarlo, ejecuta el siguiente comando:
# Windows
pip install virtualenv
# Linux
pip3 install virtualenv
brew install virtualenv
sudo apt update
sudo apt install python3-virtualenv
sudo dnf install python3-virtualenv
Administrar entornos con virtualenv
1. Crear Entorno Virtual
virtualenv .venv
2. Activar el Entorno Virtual
.venv\Scripts\activate.bat
3. Desactivar el Entorno Virtual
deactivate
4. Limpiar el Entorno Virtual (recrearlo desde cero)
virtualenv --clear .venv
La opción --clear elimina el contenido existente del directorio del entorno antes de reconstruirlo.
5. Eliminar el Entorno Virtual
(.venv) deactivate
rmdir /s /q .venv
1. Crear Entorno Virtual
virtualenv .venv
2. Activar el Entorno Virtual
source .venv/bin/activate
3. Desactivar el Entorno Virtual
deactivate
4. Limpiar el Entorno Virtual (recrearlo desde cero)
virtualenv --clear .venv
La opción --clear elimina el contenido existente del directorio del entorno antes de reconstruirlo.
5. Eliminar el Entorno Virtual
rm -rf .venv
Administrar entornos con Pipenv¶
Pipenv es una gran herramienta para gestionar entornos virtuales y dependencias de Python, destacando por integrar ambas tareas de forma flexible y sencilla.
Administración de entornos simplificado
Pipenv automáticamente crea y maneja un entorno virtual para tus proyectos, también como agregar/remover paquetes desde un archivo Pipfile.lock, que es usado para producir un determinado build.
Versiones requeridas para instalar Pipenv
Para la mayoría de los casos, se recomienda instalar Pipenv usando pip pero igual se puede instalar de otras manera según el Sistema Operativo:
# Windows
pip install --user pipenv
# Linux
pip3 install --user pipenv
Información
Al instalar Pipenv con la opción --user, es posible que deba agregar el directorio de los ejecutables al PATH para poder utilizar el comando pipenv desde la terminal.
En Linux y macOS, se puede consultar la ruta de instalación con:
python3 -m site --user-base
# Output: /Users/mcherrera/Library/Python/3.14
Normalmente, los ejecutables se encuentran en el directorio bin dentro de esa ruta. Para agregarlo al PATH en Bash o Zsh, ejecute:
echo 'export PATH="$HOME/Library/Python/3.9/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc # o .zshrc si usas zsh
Finalmente, comprobamos que Pipenv esté disponible:
pipenv --version
# Output: pipenv, version 2025.0.4
brew install pipenv
Advertencia
No se recomienda la instalación mediante Homebrew, ya que funciona mejor instalar pipenv usando pip en macOS.
sudo apt update
sudo apt install pipenv
sudo dnf install pipenv
Administrar entornos con Pipenv
1. Crear un nuevo Entorno Virtual
pipenv install
Información
Si no existe un archivo Pipfile en el directorio del proyecto, Pipenv lo crea. Si ya existe, crea el entorno virtual e instala las dependencias definidas en el archivo, utilizando el archivo Pipfile.lock si está disponible.
2. Activar el Entorno Virtual
pipenv shell
3. Desactivar el Entorno Virtual
(.venv) exit
4. Limpiar la caché de dependencias
pipenv --clear
5. Eliminar el Entorno Virtual asociado al proyecto
(.venv) exit
pipenv --rm
1. Crear un nuevo Entorno Virtual
pipenv install
2. Activar el Entorno Virtual
pipenv shell
3. Desactivar el Entorno Virtual
(.venv) exit
4. Limpiar la caché de dependencias
pipenv --clear
5. Eliminar el Entorno Virtual asociado al proyecto
(.venv) exit
pipenv --rm
Administrar dependencias con Pipenv
1. Instalar un paquete (se registrará en el archivo Pipfile y Pipfile.lock)
pipenv install requests
2. Eliminar un paquete o eliminar todos los paquetes
pipenv uninstall requests
pipenv uninstall --all
Administrar entornos con Poetry¶
Poetry es una herramienta de Python que gestiona dependencias, entornos virtuales y empaqueta proyectos.
Información
Su diferencia principal con Pipenv es que Poetry permite construir y publicar librerías directamente en PyPI, mientras que Pipenv solo sirve para administrar dependencias de aplicaciones locales.
Poetry proporciona un instalador oficial que instala la herramienta en un entorno virtual independiente y administra su propio entorno.
En Linux, macOS y Windows mediante WSL, ejecuta el siguiente comando:
curl -sSL https://install.python-poetry.org | python3 -
Info
Si el comando poetry no se reconoce, se debe agregar el directorio de instalación al PATH.
En Linux y macOS, normalmente puedes utilizar:
export PATH="$HOME/.local/bin:$PATH"
Para conservar el cambio, añade esa línea al archivo ~/.bashrc o ~/.zshrc, según la terminal que utilices:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
Verificar la instalación:
poetry --version
# Output: Poetry (version 2.5.1)
Documentación oficial: Instalación de Poetry.
Administrar entornos con Poetry
1. Inicializar el proyecto
poetry init --no-interaction
Genera el archivo pyproject.toml, donde se define la configuración del proyecto y sus dependencias. Si ya existe este archivo, puedes omitir este paso.
Info
Agrega package-mode = false a la sección [tool.poetry] del archivo pyproject.toml para indicarle a Poetry que no trate tu proyecto como un paquete Python que debe instalarse, sino que lo utilice únicamente para gestionar sus dependencias. Por ejemplo:
| pyproject.toml | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
2. Crear el Entorno Virtual
poetry env use python3.12
Selecciona el intérprete de Python que utilizará Poetry. Si el entorno virtual no existe, Poetry lo creará cuando sea necesario, por ejemplo, al ejecutar poetry install.
3. Activar el Entorno Virtual
poetry env activate
Poetry mostrará un comando, copia y ejecuta el comando que te devuelva Poetry para activar el entorno virtual.
4. Agregar e instalar un paquete (se agrega al pyproject.toml)
poetry add django
Poetry instala Django en el entorno virtual del proyecto, independientemente de que esté activado en tu terminal.
5. Eliminar el Entorno Virtual
(.venv) deactivate
poetry env remove python3.12
Esto elimina el entorno virtual asociado a Python 3.12, pero no elimina las dependencias declaradas en pyproject.toml ni el archivo poetry.lock.
1. Inicializar el proyecto
poetry init
Genera el archivo pyproject.toml, donde se define la configuración del proyecto y sus dependencias. Si ya existe este archivo, puedes omitir este paso.
Info
Agrega package-mode = false a la sección [tool.poetry] del archivo pyproject.toml para indicarle a Poetry que no trate tu proyecto como un paquete Python que debe instalarse, sino que lo utilice únicamente para gestionar sus dependencias. Por ejemplo:
| pyproject.toml | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
2. Crear el Entorno Virtual
poetry env use python3.12
3. Activar el Entorno Virtual
eval "$(poetry env activate)"
4. Agregar e instalar un paquete (se agrega al pyproject.toml)
poetry add django
Poetry instala Django en el entorno virtual del proyecto, independientemente de que esté activado en tu terminal.
5. Eliminar el Entorno Virtual
poetry env remove python3.12
Esto elimina el entorno virtual asociado a Python 3.12, pero no elimina las dependencias declaradas en pyproject.toml ni el archivo poetry.lock.
Administrar entornos con uv¶
uv es un gestor de paquetes, proyectos y entornos de Python con alto rendimiento desarrollado en Rust.
Está diseñado como una herramienta "todo en uno" que busca reemplazar varias herramientas tradicionales del ecosistema Python:
- pip ( instalador de paquetes )
- venv / virtualenv ( creadores de entornos virtuales )
- pip-tools ( compilación y bloqueo de dependencias )
- pipx ( ejecución e instalación de herramientas globales )
- pyenv ( gestor de versiones de Python )
uv proporciona un instalador oficial que permite instalar la herramienta directamente en el sistema sin necesidad de instalarla mediante pip.
curl -LsSf https://astral.sh/uv/install.sh | sh
powershell -c "irm https://astral.sh/uv/install.ps1 | more"
Administrar entornos con uv
1. Crear Entorno Virtual
uv venv .venv
2. Activar el Entorno Virtual
.venv\Scripts\activate.bat
3. Desactivar el Entorno Virtual
deactivate
4. Limpiar el Entorno Virtual (recrearlo desde cero)
uv venv --clear .venv
La opción --clear elimina el contenido existente del directorio del entorno antes de reconstruirlo.
5. Eliminar el Entorno Virtual
deactivate
rmdir /s /q .venv
1. Crear Entorno Virtual
uv venv .venv
2. Activar el Entorno Virtual
source .venv/bin/activate
3. Desactivar el Entorno Virtual
deactivate
4. Limpiar el Entorno Virtual (recrearlo desde cero)
uv venv --clear .venv
La opción --clear elimina el contenido existente del directorio del entorno antes de reconstruirlo.
5. Eliminar el Entorno Virtual
deactivate
rm -rf .venv
Buenas prácticas¶
- Utilizar
.venvcomo nombre convencional del entorno. - Agregar
.venv/al archivo.gitignore. - Mantener las dependencias del proyecto en
requirements.txt. - Utilizar un entorno independiente para cada proyecto.
¿Cuál te recomiendo?¶
1. venv — para aprender y proyectos sencillos
Ya viene con Python. Es una excelente opción para Django y proyectos académicos.
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
2. uv — para desarrollo moderno
Es rápido y permite gestionar Python, entornos virtuales y dependencias desde una sola herramienta.
uv venv
source .venv/bin/activate
uv pip install -r requirements.txt
Mi recomendación para tus proyectos Django: continúa con venv si quieres mantener una configuración sencilla. Si buscas una herramienta más completa y rápida, vale la pena aprender uv.