🧩 ¿Qué es UV? Link to heading

uv es una herramienta moderna creada por Astral (los creadores de ruff 🦀) diseñada para ser el único administrador que necesites en el ecosistema Python. Escrito en Rust, es entre 10 y 100 veces más rápido que las herramientas tradicionales.

⚡ ¿Por qué es tan rápido? Link to heading

  • Global Cache: No vuelve a descargar lo que ya tienes.
  • Hardlinks: Usa enlaces físicos para no duplicar archivos en tu disco.
  • Resolución Paralela: Resuelve dependencias de forma masiva y eficiente.

⚙️ Instalación Link to heading

# macOS & Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

🐍 1. Gestión de Versiones de Python Link to heading

Olvídate de pyenv o de pelear con las versiones de tu sistema. uv descarga y gestiona versiones de Python por ti.

# Instalar una versión específica
uv python install 3.12

# Listar versiones instaladas y disponibles
uv python list

# Usar una versión específica para un proyecto
uv venv --python 3.11

📦 2. Flujo de Trabajo Moderno (Proyectos) Link to heading

El modo recomendado es usar uv como gestor de proyectos (estilo cargo o npm).

# Inicializar un proyecto
uv init my-project
cd my-project

# Añadir dependencias (actualiza pyproject.toml y uv.lock)
uv add fastapi uvicorn

# Sincronizar el entorno (instala todo lo que falte)
uv sync

# Ver el árbol de dependencias
uv tree

🛠️ 3. Gestión de Herramientas (Pipx killer) Link to heading

Puedes instalar y ejecutar herramientas de CLI de forma aislada sin ensuciar tu entorno global.

# Ejecutar una herramienta sin instalarla (on-the-fly)
uvx ruff check .

# Instalar una herramienta globalmente
uv tool install yt-dlp
uv tool install black

# Listar herramientas instaladas
uv tool list

🧪 4. Migración y Compatibilidad Link to heading

Si vienes de un flujo basado en requirements.txt:

# Instalar desde un archivo existente
uv pip install -r requirements.txt

# Exportar tu proyecto a requirements.txt (con hashes)
uv export --format requirements-txt > requirements.txt

🧹 5. Comandos Útiles de Mantenimiento Link to heading

AcciónComando
Actualizar UVuv self update
Limpiar Cachéuv cache clean
Generar Lockfileuv lock
Ejecutar Scriptuv run myscript.py
Listar paquetesuv pip list

🔚 Conclusión Link to heading

uv no es solo una mejora incremental; es un cambio de paradigma. Centraliza la gestión de versiones, entornos y herramientas en una sola interfaz rápida y moderna. Si aún no lo usas, hoy es el mejor día para migrar.