¿Por qué usar uv?

  • Velocidad: Mucho más rápido que pip
  • Todo-en-uno: Reemplaza múltiples herramientas
  • Moderno: Diseñado para el ecosistema Python moderno
  • Confiable: Mejor manejo de dependencias

Ejemplo de Flujo de Trabajo Típico

# 1. Crear proyecto
mkdir mi_proyecto && cd mi_proyecto

# 2. Crear entorno virtual
uv venv

# 3. Activar entorno
source .venv/bin/activate  # En Linux/macOS

# 4. Instalar dependencias
uv add requests pandas
uv add --dev pytest

# 5. Sincronizar (si es necesario)
uv sync

# 6. Ejecutar código
uv run python mi_script.py

Una diferencia de uv con el uso tradicional de python y pip. Es que para ejecutar un comando como por ejemplo python algo.py con uv seria uv run python algo.py

Instalación

pipx install uv

Crear y Activar un Entorno Virtual

# Crea un entorno virtual en la carpeta .venv
uv venv

# O especifica un nombre
uv venv nombre_entorno

Activar el entorno virtual

# Linux/macOS
source .venv/bin/activate

# Windows (cmd)
.venv\\Scripts\\activate.bat

# Windows (PowerShell)
.venv\\Scripts\\Activate.ps1

Inicializar un Nuevo Proyecto

# Crea una nueva carpeta con la estructura básica
uv init mi_proyecto
cd mi_proyecto

Instalar Paquetes

uv add requests

# Para un proyecto iniciado con pip
uv pip install -r requirements.txt

Manejar Dependencias

La funcion de requirements.txt de pip, en uv se usa el archivo pyproject.toml.

# Añade una dependencia y actualiza pyproject.toml
uv add pandas

Sincronizar Entornos

Es similar a pip install -r requirements.txt pero mucho más inteligente.

# Un comando actualiza todo
uv sync

# Equivalente a:
# pip uninstall paquetes-eliminados
# pip install nuevas-dependencias
# pip actualizar paquetes-cambiados

pyproject.toml

[project]
name = "mi-proyecto"
version = "0.1.0"
dependencies = [
    "requests>=2.25.0",
    "pandas>=1.5.0",
    "numpy>=1.21.0"
]

[project.optional-dependencies]
dev = [
    "pytest>=7.0.0",
    "black>=23.0.0",
    "flake8>=6.0.0"
]
docs = [
    "sphinx>=5.0.0",
    "mkdocs>=1.4.0"
]

# Sincroniza solo las dependencias principales
uv sync

# Sincroniza dependencias principales + desarrollo
uv sync --extra dev

# Sincroniza dependencias principales + documentación
uv sync --extra docs

# Sincroniza dependencias principales + desarrollo + documentación
uv sync --extra dev --extra docs

# Sincroniza TODO
uv sync --all-extras

requirements.txt

requests>=2.25.0
pandas>=1.5.0
numpy>=1.21.0
pytest>=7.0.0
black>=23.0.0

requirements-dev.txt

# Desarrollo
pytest>=7.0.0
pytest-cov>=4.0.0
black>=23.0.0
flake8>=6.0.0

# Testing
pytest-mock>=3.0.0
# Sincroniza con requirements.txt principal
uv sync --requirements-file requirements.txt

# Sincroniza con requirements de desarrollo
uv sync --requirements-file requirements-dev.txt

# Sincroniza con múltiples archivos
uv sync --requirements-file requirements.txt --requirements-file requirements-dev.txt

Comandos Adicionales Útiles

# Ver qué haría sin ejecutarlo
uv sync --dry-run

# Version especifica
uv sync --python 3.11

# Forzar reinstalación
uv sync --reinstall

# Sincronizar sin cache
uv sync --no-cache

¿Por qué es mejor que pip install?

pip install -r requirements.txtuv sync
Instala dependenciasInstala + Desinstala + Actualiza
Puede dejar paquetes huérfanosLimpia automáticamente
No verifica consistenciaVerifica y resuelve conflictos
Múltiples comandos para gruposUn comando para todos los grupos

En resumen: uv sync convierte múltiples operaciones manuales en una sola operación automática y confiable. ¡Es como un “reset” limpio de tu entorno!

Otros Comandos Útiles

Listar paquetes instalados

uv pip list

Mostrar información de un paquete

uv pip show requests

Ejecutar comandos en el entorno virtual sin activarlo

uv run python mi_script.py

Documentación oficial

https://docs.astral.sh/uv

By Mauro

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *