Python

UV: El Gestor de Python que viene a jubilar a pip, Poetry y pyenv

6 min lectura José Miguel
Si llevas tiempo desarrollando en Python, conoces bien «el ritual»: instalas una versión de Python con pyenv, creas un entorno virtual con venv, instalas paquetes con pip, generas un requirements.txt (o usas pip-tools para bloquear versiones) y, si el proyecto es serio, acabas peleándote con la configuración de Poetry o PDM.Este flujo fragmentado ha sido el «caos histórico» del packaging en Python durante décadas. Pero las reglas del juego han cambiado. Ha llegado uv, una herramienta escrita en Rust que no solo es increíblemente rápida, sino que aspira a ser la única herramienta que necesites en tu terminal para trabajar con Python.En este artículo, exploraremos qué es uv, por qué está revolucionando el ecosistema y cómo logra integrar media docena de herramientas en un solo binario.

1. ¿Qué es uv y por qué todo el mundo habla de ella?

Desarrollada por Astral (los creadores de Ruff, el linter más rápido de Python), uv es una solución «todo en uno» para la gestión de proyectos Python. Su propuesta es sencilla pero ambiciosa: eliminar la fricción.A diferencia de las herramientas tradicionales escritas en Python, uv está construida en Rust. Esto le otorga una ventaja competitiva brutal: la velocidad. Estamos hablando de instalaciones que son entre 10 y 100 veces más rápidas que las de pip. Pero, como veremos, la velocidad es solo la punta del iceberg.

El enfoque unificado

uv no nace para ser «otro gestor de paquetes». Nace para simplificar el flujo completo. En lugar de saltar entre cinco herramientas diferentes, uv ofrece una experiencia coherente donde la gestión de versiones de Python, las dependencias y los entornos virtuales conviven en armonía.

2. El problema que viene a resolver: El fin del caos

Históricamente, el packaging en Python ha sido un puzzle de piezas que no siempre encajan bien:
    • pip es excelente instalando, pero no gestiona proyectos ni resuelve conflictos de dependencias de forma avanzada.
    • venv aísla entornos, pero requiere gestión manual (activar/desactivar).
    • requirements.txt es frágil y no garantiza la reproducibilidad total sin herramientas extra.
Este desorden genera el famoso «en mi máquina funciona», pero falla en el servidor o en la máquina de un compañero. uv ataca este problema de raíz implementando un modelo de proyecto moderno basado en estándares actuales (como el pyproject.toml), garantizando que lo que instalas hoy sea exactamente lo mismo que se instale en producción mañana.

3. ¿Qué herramientas integra uv en una sola?

Lo más impresionante de uv es su capacidad de reemplazo. Si empiezas a usar uv, puedes dejar de instalar (o usar directamente) las siguientes herramientas:

A. Reemplaza a pip y pip-tools

uv incluye una interfaz compatible con pip (uv pip). Puedes ejecutar uv pip install y obtener una velocidad instantánea gracias a su sistema de caché global y su motor de resolución de dependencias escrito en Rust.

B. Reemplaza a pyenv y gestores de versiones

¿Necesitas Python 3.12 para un proyecto y 3.10 para otro? uv python install 3.12 lo descarga y gestiona por ti. Ya no necesitas compilar Python desde el código fuente ni depender de gestores externos pesados.

C. Reemplaza a venv y virtualenv

Olvídate de crear entornos manualmente. Con comandos como uv venv o simplemente dejando que uv run gestione el entorno de forma efímera, el aislamiento se vuelve casi invisible para el desarrollador.

D. Reemplaza a Poetry y PDM

uv gestiona el archivo pyproject.toml de forma nativa. Con uv add añades dependencias y uv lock genera un archivo de bloqueo (uv.lock) extremadamente preciso y rápido de sincronizar con uv sync.

E. Reemplaza a pipx

¿Quieres ejecutar una herramienta como Black o Ruff sin instalarla en tu entorno global? uvx (o uv tool run) descarga la herramienta en un entorno temporal, la ejecuta y listo. Es el sustituto perfecto y más veloz para pipx.

4. Características de «Siguiente Generación»

uv no solo copia lo que otros hacen; introduce conceptos modernos que hacen la vida más fácil:
    • Inline Script Metadata (PEP 723): Puedes escribir un script de un solo archivo y declarar sus dependencias dentro de comentarios en el propio archivo. Al ejecutarlo con uv run script.py, uv creará un entorno al vuelo con lo necesario. ¡Magia para scripts de automatización!
    • Workspaces: Si trabajas en monorepos con múltiples paquetes que dependen entre sí, uv permite gestionarlos como una unidad, compartiendo un solo archivo de bloqueo y optimizando las instalaciones.
    • Caché Global Inteligente: No vuelvas a descargar Pandas o Django diez veces para diez proyectos distintos. uv utiliza enlaces simbólicos o «reflinks» para que la instalación en un nuevo proyecto sea instantánea si el paquete ya está en tu máquina.

5. uv vs. El Resto: ¿Cuándo cambiar?

HerramientaCuándo usarla¿uv la supera?
pipEn contenedores Docker muy minimalistas.Sí, por velocidad y gestión de lockfiles.
PoetrySi ya tienes un flujo de trabajo muy establecido y complejo.Sí, en velocidad y simplicidad de uso.
CondaEn Data Science complejo con dependencias no-Python (C++, CUDA).uv es mejor para Python puro, Conda sigue reinando en binarios complejos.

6. Conclusión: Menos herramientas, más código

La filosofía de uv es clara: Menos herramientas. Menos pasos. Menos decisiones innecesarias.Al unificar todo el flujo de trabajo en un solo binario de pocos megabytes, uv reduce la carga cognitiva del desarrollador. Ya no tienes que enseñar a un junior cinco herramientas diferentes para que empiece a colaborar; solo necesita saber una: uv.Si buscas un ecosistema más rápido, fiable y moderno, el cambio a uv no es una opción, es el siguiente paso lógico. Python ha tardado años en tener una herramienta de este calibre, pero la espera ha merecido la pena.¿Te ha gustado este artículo? Si estás listo para dar el salto, te recomiendo empezar con un simple uv init en tu próximo proyecto. ¡Tu terminal te lo agradecerá!
José Miguel Moya Curbelo
José Miguel Moya Curbelo
Senior Data Engineer & Big Data Instructor

MSc Applied Mathematics · AWS Cloud Practitioner · SCRUM Master. Especializado en arquitecturas de datos de alto rendimiento con Apache Spark, Snowflake, Python y Scala.

Conectar en LinkedIn

Artículos Relacionados