Gestión de entornos en Python
Bibliografía
1. Introducción
Existen varias opciones para la gestión de paquetes en Python. Independientemente de la que elijas, mi recomendación es optar siempre por la alternativa más simple y minimalista. Cuanto menor sea el número de dependencias y más ligero el entorno, más fácil será llevarlo a producción (por ejemplo, en una imagen de Docker), compartirlo con tu equipo o mantenerlo en el tiempo.
En la actualidad, las opciones que más recomiendo son Poetry y uv. Ambas
herramientas agilizan la creación y gestión de entornos, permiten mantener las
configuraciones del proyecto de forma organizada mediante un archivo pyproject.toml y,
sobre todo, favorecen la reproducibilidad de los proyectos, algo esencial tanto en
desarrollo como en despliegue.
1.1. Anaconda

Logo de Anaconda
Anaconda es una plataforma de código abierto diseñada para la creación y gestión de entornos virtuales en Python, enfocada en proyectos de ciencia de datos y aprendizaje automático. Proporciona una distribución de Python con numerosas bibliotecas preinstaladas, un gestor de paquetes eficiente y herramientas avanzadas como Jupyter.
La gestión de paquetes en Anaconda se realiza mediante Conda, aunque también es posible utilizar PIP. Durante años fue la plataforma más usada en ciencia de datos, ya que ofrecía un ecosistema completo (Jupyter, Spyder, RStudio, etc.) de manera muy sencilla. Sin embargo, con el tiempo ha presentado limitaciones:
- Licencia más restrictiva para empresas.
- Exceso de dependencias por defecto, lo que dificulta entornos de producción ligeros.
Hoy en día existen alternativas más eficientes, modernas y ligeras, como Poetry y uv, que utilizan el gestor de entornos virtuales de Python y evitan instalar paquetes innecesarios.
1.2. VENV
Por otro lado, VENV es una alternativa más ligera para la creación de entornos virtuales sin las dependencias adicionales de Anaconda. En este caso, la gestión de paquetes se lleva a cabo con PIP.
1.3. Poetry
Logo de Poetry
Poetry es otra herramienta de gestión de dependencias en proyectos de Python. Permite, entre otras cosas:
- Administrar dependencias por grupos (producción, pruebas, documentación, etc.).
- Crear y manejar entornos virtuales automáticamente.
- Facilitar la creación de wheels para empaquetar proyectos y publicarlos en PyPI.
1.4. uv
uv es una de las herramientas más recientes y eficientes para la gestión de entornos
virtuales y dependencias en Python. Su objetivo principal es simplificar y acelerar
tareas que tradicionalmente requieren múltiples herramientas, como pip, poetry o
venv. Desarrollada por Astral, los creadores de Ruff, uv se destaca por su
rapidez y su integración directa con el flujo de trabajo moderno de proyectos Python.
La instalación de uv se realiza a través de la terminal y puede depender del sistema
operativo utilizado. Una de sus principales ventajas es la posibilidad de crear un
entorno virtual por proyecto, lo que permite instalar únicamente las dependencias
necesarias para cada proyecto, evitando conflictos de versiones.
1.4.1. Operaciones básicas de uv
uv python list→ Muestra las versiones de Python disponibles.uv python install <version>→ Instala una versión específica de Python.uv run→ Ejecuta scripts dentro del entorno virtual.uv init→ Inicializa un proyecto gestionado poruv.uv add→ Añade nuevas dependencias al proyecto.uv sync→ Sincroniza el entorno con las dependencias declaradas.uv tree→ Muestra la estructura de dependencias.uv venv→ Gestiona entornos virtuales automáticamente.
1.4.2. Ventajas de uv
- Velocidad extrema: Utiliza Rust para instalar y resolver dependencias en
milisegundos, superando a
pipypoetry. - Modelo familiar: Emplea un sistema similar a
cargode Rust, basado en archivospyproject.toml. - Gestión automática de entornos: No requiere configuraciones adicionales para crear y mantener entornos virtuales.
- Solución unificada: Reemplaza de forma eficiente a
pip,pip-tools,poetryyvenvcon una sola herramienta moderna.
Para más información y documentación, se puede consultar el repositorio oficial de uv.
2. Utilidades para la gestión de entornos
2.1. Creación de un entorno virtual
Un entorno virtual es como una “caja aislada” donde instalamos las librerías que necesita un proyecto en particular, sin afectar al resto del sistema ni a otros proyectos. Dependiendo de la herramienta que elijas, el proceso puede variar un poco. Aquí tienes las opciones más utilizadas:
- VENV
- Anaconda
- Poetry
- uv
-
Actualizar el sistema (para tener las últimas mejoras y seguridad):
sudo apt update && sudo apt upgrade -y -
Añadir un repositorio con versiones recientes de Python (opcional, solo si tu sistema no tiene la versión que necesitas):
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update -
Instalar una versión específica de Python (ejemplo: Python 3.10):
sudo apt install python3.10 -
Instalar VENV y herramientas básicas (
pipy cabeceras de desarrollo):sudo apt install python3.10-venv python3.10-dev python3-pip -
Crear el entorno virtual dentro del directorio del proyecto:
python -m venv nombre_del_entorno -
Activar el entorno (a partir de aquí, todo lo que instales quedará dentro de esta “caja aislada”):
source nombre_del_entorno/bin/activate
-
Descargar e instalar Anaconda desde la página oficial.
-
Abrir la terminal de Anaconda Prompt (en Windows se instala junto con Anaconda).
-
Crear un nuevo entorno:
conda create --name nombre_del_entorno -
Activar el entorno:
conda activate nombre_del_entorno -
(Opcional) Usar
pipdentro de Anaconda: Se puede, aunque no se recomienda mezclarcondaypip, porque puede dar problemas de compatibilidad.conda install anaconda::pip
pip install --upgrade pip
-
Instalar Poetry:
pip install poetry -
Configurar Poetry para que cree entornos dentro del proyecto (esto es lo más práctico y viene por defecto en las versiones recientes):
poetry config virtualenvs.in-project true -
Crear un nuevo proyecto (Poetry genera la estructura básica con carpetas y un archivo
pyproject.toml):poetry new nombre_del_proyecto -
Instalar dependencias y generar el entorno automáticamente:
poetry install
-
Instalar uv (en Linux/macOS):
curl -LsSf https://astral.sh/uv/install.sh | sh -
Crear un nuevo proyecto:
uv init nombre_del_proyecto
cd nombre_del_proyecto -
Crear el entorno virtual e instalar dependencias:
uv venv
uv pip install nombre_del_paquete
2.2. Gestión de la caché
Para liberar espacio o solucionar problemas con dependencias, se puede purgar la caché con los siguientes comandos:
- PIP
- Anaconda
- Poetry
- uv
pip cache purge
conda clean --all
poetry cache clear --all .
uv cache clean
2.3. Actualización de paquetes
Mantener las dependencias actualizadas es clave para el correcto funcionamiento del proyecto.
- PIP
- Anaconda
- Poetry
- uv
Actualizar todos los paquetes
Puedes utilizar el siguiente comando para actualizar todos los paquetes:
pip freeze | grep -v "^\-e" | cut -d = -f 1 | xargs -n1 pip install -U
Donde:
pip freeze: Genera una lista de los paquetes instalados.grep -v "^\-e": Excluye las instalaciones en modo editable.cut -d = -f 1: Extrae solo los nombres de los paquetes, sin las versiones.xargs -n1 pip install -U: Actualiza cada paquete.
Actualizar un paquete específico
Para actualizar un paquete específico:
pip install --upgrade nombre_del_paquete
Actualizar todos los paquetes
Aunque Anaconda permite la instalación de paquetes con PIP, se recomienda evitar mezclar paquetes del repositorio de Anaconda y PIP, ya que esto podría causar conflictos. Si decides usar paquetes de Anaconda, puedes actualizar todos los paquetes con:
conda update --all
Actualizar un paquete específico
Para actualizar un paquete específico:
conda update nombre_del_paquete
Actualizar todos los paquetes
poetry update
Actualizar un paquete específico
Para actualizar un paquete específico:
poetry update nombre_del_paquete
uv pip install --upgrade nombre_del_paquete
2.4. Instalación de paquetes desde un archivo de requisitos
Cuando un proyecto necesita dependencias específicas, es útil usar un archivo
requirements.txt:
-
Crear un archivo
requirements.txtcon los paquetes y versiones deseadas:numpy==1.21.0
pandas>=1.3.0
requests -
Instalar los paquetes desde el archivo:
- PIP
- Poetry
- uv
pip install -r requirements.txtpoetry installuv pip install -r requirements.txt
2.5. Eliminar un entorno
- VENV, Poetry, uv
- Anaconda
En la mayoría de los casos, los entornos creados con VENV, Poetry y uv se alojan dentro del propio directorio del proyecto. Por ello, si ya no los necesitas, basta con eliminar la carpeta correspondiente para borrar por completo el entorno junto con toda su información.
rm -rf nombre_del_entorno
-
Listar los entornos disponibles:
conda env list -
Eliminar un entorno:
conda env remove --name nombre_del_entorno
2.6. Integración del entorno con Jupyter
Para utilizar un entorno virtual dentro de Jupyter, es necesario seguir estos pasos:
-
Instalar
ipykernelen el entorno Primero, debes añadiripykernelcomo dependencia dentro del entorno virtual. Para ello, instala el paquete utilizando el gestor de dependencias correspondiente (por ejemplo,pip,poetry,uvoconda). -
Registrar el entorno en Jupyter Este paso es necesario únicamente cuando el entorno virtual se encuentra en un directorio diferente al del proyecto. En la mayoría de los entornos de desarrollo, como VSCode, si el entorno está dentro del directorio del proyecto, se detectará automáticamente y podrás seleccionar el kernel asociado sin pasos adicionales.
En caso de que necesites registrar el entorno manualmente, ejecuta:
python -m ipykernel install --user --name=nombre_del_entorno
2.7. Eliminación de paquetes instalados
- PIP
- Anaconda
- Poetry
- uv
Eliminar todos los paquetes
pip list --format=freeze > installed.txt
pip uninstall -r installed.txt -y
Eliminar un paquete específico
pip uninstall nombre_del_paquete
conda remove nombre_del_paquete
poetry remove nombre_del_paquete
uv pip uninstall nombre_del_paquete