Saltar al contenido principal
Herramientas de Python2026-07-29 · 7 min de lectura

uv: El administrador de paquetes de Python que reemplaza a pip, pip-tools y venv (Guía 2026)

Si ha pasado algún tiempo en un proyecto de Python este año, probablemente haya visto aparecer "uv" en un archivo README o CI. Es un administrador de paquetes escrito en Rust y una herramienta virtualenv de Astral (el mismo equipo detrás de ruff), y es entre 10 y 100 veces más rápido que el combo clásico pip/pip-tools/venv.

Esta guía cubre: lo que realmente reemplaza uv, los cinco comandos que cubren el 95% de lo que haces diariamente y los dos casos en los que debes seguir con las herramientas clásicas.

¿Qué reemplaza la luz ultravioleta?

| Herramienta clásica | equivalente ultravioleta | Acelerar |

|---|---|---|

| python -m venv .venv | uv venv | ~5x |

| paquete de instalación de pip | paquete de instalación uv pip | ~10-50x |

| pip install -r requisitos.txt | uv pip install -r requisitos.txt | 20-100x en caché fría |

| pip-compile (pip-herramientas) | compilación uv pip | ~50x |

| python -m venv + source enable para cada proyecto | uv ejecutar <cmd> | Omite la activación por completo |

La diferencia de velocidad es real. La instalación de un proyecto Django moderado (Django + DRF + apio + redis + boto3 + ~40 departamentos transitivos) en un caché frío tarda ~45 segundos con pip y ~2 segundos con uv. En un caché cálido, uv es esencialmente instantáneo porque utiliza un caché global vinculado en lugar de copiar archivos en cada venv.

Los cinco comandos que realmente usarás

1. Instale el propio uv

BASH
# macOS + Linux — one line, no sudo, no Python needed curl -LsSf https://astral.sh/uv/install.sh | sh # Windows PowerShell powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" # Or via brew / apt / your package manager (updated frequently) brew install uv

uv es un binario autónomo único: sin arranque de Python, sin dependencias propias.

2. Crea un entorno virtual

BASH
cd my-project uv venv # creates .venv/ using the current Python uv venv --python 3.13 # or pin a version — uv will download it if missing

A diferencia de python -m venv, uv puede buscar la versión de Python que solicitó. No más baile de tres pasos de "pyenv instalar, luego venv y luego activar".

3. Instalar paquetes

BASH
uv pip install fastapi httpx # into the current venv uv pip install -r requirements.txt # bulk install uv pip install -e . # editable install of current project

La sintaxis es intencionalmente idéntica a "pip": cambie "pip" por "uv pip" y todo funcionará. Costo de la migración: cinco pulsaciones de teclas.

4. Requisitos de congelación/compilación

BASH
# From an installed venv → requirements.txt (like `pip freeze`) uv pip freeze > requirements.txt # From a loose requirements.in → fully pinned requirements.txt (like pip-compile) uv pip compile requirements.in -o requirements.txt

El paso de "compilar" es determinista: misma entrada, misma salida, byte por byte. Perfecto para CI reproducible.

5. Ejecutar un comando sin activar el venv

BASH
uv run pytest # runs pytest from the current venv uv run python manage.py migrate # any command, any script uv run --with ipython python # temporarily add ipython for this session

Esta es la característica principal. No más source .venv/bin/activate antes de cada comando. Excelente en CI, excelente en Makefiles, excelente en scripts de shell.

Migrar un proyecto existente (2 minutos)

Suponiendo que tiene un requirements.txt:

BASH
# 1. Nuke the old venv rm -rf .venv # 2. Create the uv venv uv venv # 3. Install uv pip install -r requirements.txt # 4. Verify uv run python -c "import fastapi; print(fastapi.__version__)"

Cuatro comandos, listo. No es necesario cambiar su requirements.txt. No es necesario cambiar su pyproject.toml. Su CI apenas necesita cambiar: cambie el paso de instalación y listo.

La ruta nativa de pyproject.toml (proyectos uv-first)

Para proyectos que comienzan desde cero, utilice el flujo de trabajo nativo de uv, sin ningún requisito.txt:

BASH
uv init my-project # generates pyproject.toml + .python-version + .gitignore cd my-project uv add fastapi # adds fastapi to pyproject.toml [dependencies] AND installs uv add --dev pytest # adds to dev-dependencies uv sync # installs exactly what pyproject.toml says (uses uv.lock) uv lock --upgrade # bumps every dependency to its latest compatible version

Tiene la misma forma que cargo para Rust o npm para Node: un archivo de configuración, un archivo de bloqueo, instalaciones deterministas. Si estás empezando de nuevo en 2026, este es el camino.

Cuándo seguir usando pip/venv

Dos casos:

1. Sistemas CI heredados que no pueden instalar uv. Si está atrapado con un agente de Jenkins de 2019 sin acceso al shell, la fricción de instalar uv puede superar la ganancia de velocidad. Cada sistema de CI moderno (GitHub Actions, GitLab CI, CircleCI, BuildKite) tiene un instalador uv de una línea.

2. Entornos con espacio de aire con un espejo `pip` bloqueado. uv tiene como valor predeterminado PyPI pero admite --index-url; esto generalmente funciona, pero algunos espejos corporativos tienen comportamientos sutiles (encabezados de autenticación, API JSON versus API simple) que uv maneja de manera diferente. Pruebe antes de comprometerse.

Eso es todo. Para todos los demás casos en 2026 (desarrollador individual, proyectos en equipo, código abierto, CI, Docker), uv es más rápido, más confiable y requiere menos sobrecarga mental que la pila clásica.

El intercambio de CI de 30 segundos

Antes (acciones de GitHub):

YAML
- uses: actions/setup-python@v5 with: python-version: '3.13' - run: pip install -r requirements.txt - run: pytest

Después:

YAML
- uses: astral-sh/setup-uv@v3 - run: uv sync - run: uv run pytest

Las ejecuciones de CI disminuyen de ~2 minutos a ~15 segundos en el paso de instalación. Si su matriz de prueba se ejecuta 5 veces por PR, eso es un ahorro acumulativo real.


uv es una herramienta poco común que es a la vez más rápida Y más sencilla que la que reemplaza. Si escribe Python para ganarse la vida en 2026, dedique 10 minutos a cambiar un proyecto. El hábito se trasladará a cada nuevo proyecto que toque.

Siguiente paso: la pista de Python DevOps cubre uv, ruff, Docker y la pila de implementación moderna de Python: 104 lecciones interactivas.

¿Listo para probarlo?

15 lecciones gratis después de un registro gratuito, sin tarjeta. Pruebe la plataforma y luego decida.

Empieza gratis →

Or unlock every lesson

Pro — $12/mo, unlimited AI, cancel any time. Refund within 14 days worldwide.

See Pro plans →

Get one Python lesson + one career idea every Friday

No spam, no "buy our course now". Three bullets, every Friday. Unsubscribe with one click.