uv - Nuevo paquete de Python, gestor de proyectos y entornos

Buenas cosas sobre Python uv

Índice

Python uv (pronunciado “you-vee”) es una herramienta moderna y de alto rendimiento para la gestión de paquetes y proyectos de Python escrita en Rust. Está diseñada como un reemplazo directo para las herramientas tradicionales de gestión de paquetes de Python como pip, pip-tools, virtualenv, pipx y pyenv, con el objetivo de simplificar y acelerar los flujos de trabajo de desarrollo en Python.

uv es desarrollado por Astral, el equipo detrás del popular linter de Python Ruff, y está diseñado para abordar puntos de dolor comunes en el ecosistema de Python, como instalaciones lentas, conflictos de dependencias y gestión compleja de entornos, aprovechando el rendimiento de Rust y la arquitectura moderna del software.

uv python ultra-violet spa

Características clave de uv

  • Velocidad excepcional: uv es significativamente más rápido que las herramientas tradicionales—normalmente 8–10 veces más rápido que pip sin caché, y hasta 80–115 veces más rápido con un caché caliente.
  • Herramienta todo en uno: Combina la instalación de paquetes, resolución de dependencias, gestión de entornos virtuales, gestión de versiones de Python, creación de estructuras de proyectos y ejecución de scripts en una sola herramienta.
  • Compatibilidad: Ofrece una interfaz de línea de comandos compatible con pip, lo que facilita su adopción sin una curva de aprendizaje pronunciada.
  • Gestión robusta de dependencias: Proporciona resolución precisa de dependencias y soporte para archivos de bloqueo para entornos reproducibles.
  • Entornos virtuales automáticos: Crea y gestiona entornos virtuales automáticamente, reduciendo la configuración manual.
  • Compatibilidad multiplataforma: Funciona en macOS, Linux y Windows.
  • Instalación independiente: Puede instalarse sin necesidad de Python o Rust, usando un instalador simple o curl.

uv vs poetry vs pdm vs pip performance comparison

¿Todavía no estás seguro de por qué usar uv?

  • Rendimiento: Reduce drásticamente los tiempos de instalación de paquetes y resolución de dependencias.
  • Simplicidad: Une múltiples herramientas en una sola, simplificando la configuración y gestión de proyectos.
  • Fiabilidad: Proporciona entornos consistentes y reproducibles con mensajes de error claros y resolución de conflictos.
  • Estándares modernos: Soporta pyproject.toml para la configuración del proyecto, alineándose con los estándares actuales de empaquetado de Python.

Casos de uso ejemplos

Vamos a probar algo emocionante!

  • Iniciar un nuevo proyecto:
uv init myproject
cd myproject
uv add requests
uv run python script.py

Esto crea un directorio del proyecto, establece un entorno virtual, instala dependencias e ejecuta scripts en un entorno aislado.

  • Gestionar scripts con dependencias en línea:
uv add --script script.py requests
uv run script.py

uv puede gestionar dependencias para scripts de un solo archivo sin archivos de requisitos separados.

Comparación con herramientas tradicionales

Característica uv pip/virtualenv Poetry
Velocidad Muy rápida Lenta Moderada
Entornos virtuales Automático Manual Automático
Resolución de dependencias Avanzada Básica Avanzada
Gestión de versiones de Python No (requiere pyenv) No
Soporte para archivos de bloqueo No (requiere pip-tools)
Ejecución de scripts Integrada No Limitada

¿Cómo puedo instalar y comenzar a usar UV en mi sistema?

Para instalar y comenzar a usar uv en tu sistema, sigue estos pasos sencillos:

Instalación

  1. Instalador independiente (Recomendado)
    • Linux/macOS:
curl -LsSf https://astral.sh/uv/install.sh | sh

O, si prefieres wget:

wget -qO- https://astral.sh/uv/install.sh | sh
  • Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
  • Versión específica: Puedes solicitar una versión específica incluyéndola en la URL, por ejemplo, https://astral.sh/uv/0.7.15/install.sh.
  1. Alternativa: Instalar mediante pip (si tienes Python instalado)
pip install uv

Nota: Este método no se recomienda para acceso a nivel de sistema a menos que sepas lo que estás haciendo, ya que podría ensuciar tu entorno de Python del sistema.

  1. Instalar mediante pipx (para instalación aislada a nivel de usuario)
pipx install uv

Este método es más limpio para acceso global si ya usas pipx.

Comenzando

Para Verificar la instalación - Ejecuta:

uv

Deberías ver un menú de ayuda confirmando que uv está instalado y listo para usar.

Para Crear y activar un entorno virtual

  • Crear un entorno virtual:
uv venv test
  • Activarlo en Linux/macOS:
source test/bin/activate
  • Activarlo en Windows:
.\test\Scripts\activate

Ahora puedes usar uv pip install para instalar paquetes en este entorno.

Iniciar un nuevo proyecto

uv init

Esto crea un pyproject.toml y .gitignore para tu proyecto.

Añadir dependencias

Añadir un paquete:

uv add

Esto actualiza pyproject.toml y genera/actualiza el archivo de bloqueo.

Sincronizar dependencias

Instalar todas las dependencias en tu entorno:

uv sync

O, usar la interfaz compatible con pip:

uv pip install

Esto asegura que todas las dependencias se instalen según tu archivo de bloqueo.

Ejecutar scripts

Usa:

uv run script.py

Esto gestiona automáticamente el entorno y las dependencias para tu script.

Integración con la shell (opcional)

Para un flujo de trabajo más suave, puedes agregar la integración con la shell a tu .zshrc o .bashrc para activar automáticamente un entorno virtual por defecto y aliasar pip a uv pip.

Con estos pasos, tendrás uv instalado y estarás listo para gestionar tus proyectos de Python con rapidez y facilidad.

Instalando versiones específicas de Python

Puedes usar uv para instalar versiones específicas de Python y gestionarlas para tus proyectos.

  • Instalar la última versión estable de Python:
    uv python install
    
    Este comando descarga e instala la última versión estable de Python disponible.
  • Instalar una versión específica:
    uv python install 3.12
    
    Esto instala la última versión de parche de Python 3.12 (por ejemplo, 3.12.3).
  • Instalar una versión exacta de parche:
    uv python install 3.12.3
    
    Esto instala exactamente Python 3.12.3.
  • Instalar múltiples versiones:
    uv python install 3.9 3.10 3.11
    
    Esto instala Python 3.9, 3.10 y 3.11.
  • Instalar una versión que coincida con una restricción:
    uv python install '>=3.8,=3.11"
    
    Esto cambia el requisito de versión de Python del proyecto.

Notas adicionales

Descargas automáticas: Por defecto, uv descargará e instalará automáticamente las versiones de Python necesarias si no se encuentran en tu sistema.

Python del sistema: uv puede usar instalaciones de Python existentes si están presentes, o puedes forzar que use Python del sistema con la bandera --no-managed-python.

Actualización: Puedes actualizar las versiones de Python gestionadas por uv a la última versión de parche con:

uv python upgrade 3.12

O actualizar todas las versiones instaladas:

uv python upgrade

La actualización entre versiones menores (por ejemplo, 3.12 a 3.13) no se admite.

En resumen, uv proporciona herramientas flexibles y poderosas para instalar, gestionar y usar versiones específicas de Python en tus proyectos.

¿Cómo descubre UV los intérpretes de Python disponibles en diferentes sistemas?

UV descubre los intérpretes de Python disponibles en diferentes sistemas verificando un conjunto de ubicaciones bien definidas y consultando cada candidato para su metadatos de versión. Aquí está cómo funciona:

  • Instalaciones de Python gestionadas:
    UV primero busca en el directorio especificado por la variable de entorno UV_PYTHON_INSTALL_DIR, donde almacena sus propias versiones de Python gestionadas.
  • Ruta del sistema (PATH):
    En macOS y Linux, UV busca ejecutables llamados python, python3 o python3.x (donde x es un número de versión) en los directorios listados en la ruta del sistema PATH. En Windows, busca python.exe.
  • Ubicaciones específicas de Windows:
    En Windows, UV también verifica el registro de Windows y los intérpretes de Python del Microsoft Store usando la salida de py --list-paths.
  • Entornos virtuales:
    Si un entorno virtual está activo o se especifica, UV verifica el intérprete en ese entorno para su compatibilidad antes de buscar en otro lugar.
  • Consulta de metadatos:
    Cada ejecutable descubierto se consulta para su metadatos de versión. Solo los ejecutables que coincidan con la versión solicitada (o restricción de versión) se consideran. Los archivos no ejecutables se ignoran.
  • Preferencia y alternativa:
    Por defecto, UV prefiere las instalaciones de Python del sistema, pero puedes ajustar esto con opciones para preferir versiones gestionadas o usar solo versiones gestionadas/sistema. Si no se encuentra un intérprete adecuado, UV puede descargar e instalar la versión requerida.

Este proceso de descubrimiento robusto asegura que UV pueda localizar y usar el intérprete de Python correcto de forma confiable en diferentes sistemas operativos y entornos.

Enlaces útiles