uv: nuevo gestor de paquetes, proyectos y entornos de Python

Lo bueno de Python uv

Índice

Python uv (pronunciado “you-vee”) es un moderno gestor de paquetes y proyectos de Python de alto rendimiento, escrito en Rust. Está diseñado como una alternativa directa 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 dolorosos comunes en el ecosistema de Python, como las instalaciones lentas, los conflictos de dependencias y la gestión compleja de entornos, aprovechando el rendimiento de Rust y la arquitectura de software moderna.

uv python ultra-violet spa

Características principales de uv

  • Velocidad excepcional: uv es significativamente más rápido que las herramientas tradicionales, típicamente 8–10 veces más rápido que pip sin caché, y hasta 80–115 veces más rápido con una caché caliente.
  • Herramienta todo en uno: Combina la instalación de paquetes, la resolución de dependencias, la gestión de entornos virtuales, la gestión de versiones de Python, la creación de estructura de proyectos y la 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 sólida de dependencias: Proporciona una resolución precisa de dependencias y soporte para archivos de bloqueo (lockfile) para entornos reproducibles.
  • Entornos virtuales automáticos: Crea y gestiona entornos virtuales automáticamente, reduciendo la configuración manual.
  • Soporte multiplataforma: Funciona en macOS, Linux y Windows.
  • Instalación independiente: Puede instalarse sin requerir Python o Rust, utilizando 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: Unifica múltiples herramientas en una, optimizando 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 de proyectos, alineándose con los estándares actuales de empaquetado de Python.

Casos de uso de ejemplo

¡Intentemos algo emocionante!

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

Esto crea un directorio de proyecto, configura un entorno virtual, instala dependencias y ejecuta scripts en un entorno aislado.

  • Gestionar scripts con dependencias inline:
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

Función 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 Sí No (requiere pyenv) No
Soporte de Lockfile Sí No (requiere pip-tools) Sí
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 su sistema, siga estos pasos sencillos:

Instalación

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

O, si prefiere 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: Puede solicitar una versión específica incluyéndola en la URL, p. ej., https://astral.sh/uv/0.7.15/install.sh.
  1. Alternativa: Instalar vía pip (si tiene Python instalado)
pip install uv

Nota: Este método no es muy recomendado para acceso en todo el sistema a menos que sepa lo que está haciendo, ya que puede saturar su entorno de Python del sistema.

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

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

Primeros pasos

Para Comprobar la Instalación - Ejecute:

uv

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

Para Crear y Activar un Entorno Virtual

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

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

Inicializar un Nuevo Proyecto

uv init

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

Agregar Dependencias

Agregar un paquete:

uv add

Esto actualiza pyproject.toml y genera/actualiza el lockfile.

Sincronizar Dependencias

Instalar todas las dependencias en su entorno:

uv sync

O, usar la interfaz compatible con pip:

uv pip install

Esto asegura que todas las dependencias estén instaladas según su lockfile.

Ejecutar Scripts

Use:

uv run script.py

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

Integración con Shell (Opcional)

Para un flujo de trabajo más fluido, puede añadir la integración con shell a su .zshrc o .bashrc para activar automáticamente un entorno virtual predeterminado y asignar un alias a pip como uv pip.

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

Instalación de Versiones Específicas de Python

Puede usar uv para instalar versiones específicas de Python y gestionarlos para sus proyectos.

  • Instalar la versión estable más reciente de Python:
    uv python install
    
    Este comando descarga e instala la versión estable más reciente de Python disponible.
  • Instalar una versión específica:
    uv python install 3.12
    
    Esto instala el parche de mantenimiento más reciente de Python 3.12 (p. ej., 3.12.3).
  • Instalar una versión de parche exacta:
    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 cumpla con una restricción:
    uv python install '>=3.8,=3.11"
    
    Esto cambia el requisito de la versión de Python del proyecto.

Notas Adicionales

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

Python del Sistema: uv puede utilizar instalaciones de Python existentes si están presentes, o puede forzarlo para que use el Python del sistema con la bandera --no-managed-python.

Actualización: Puede actualizar las versiones de Python gestionadas por uv a la versión de parche más reciente con:

uv python upgrade 3.12

O actualizar todas las versiones instaladas:

uv python upgrade

La actualización entre versiones menores (p. ej., de 3.12 a 3.13) no está soportada.

En resumen, uv proporciona herramientas flexibles y potentes para instalar, gestionar y utilizar versiones específicas de Python en sus 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 por su metadatos de versión. Así es como 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.
  • PATH del Sistema:
    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 el PATH del sistema. En Windows, busca python.exe.
  • Ubicaciones Específicas de Windows:
    En Windows, UV también comprueba el registro de Windows e intérpretes de Python de Microsoft Store utilizando la salida de py --list-paths.
  • Entornos Virtuales:
    Si un entorno virtual está activo o especificado, UV comprueba el intérpreter en ese entorno para ver la compatibilidad antes de buscar en otras partes.
  • Consulta de Metadatos:
    Cada ejecutable descubierto se consulta por sus 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 Fallback:
    Por defecto, UV prefiere las instalaciones de Python del sistema, pero puede ajustar esto con opciones para preferir las versiones gestionadas o usar solo versiones gestionadas/de sistema. Si no se encuentra ningún intérprete adecuado, UV puede descargar e instalar la versión requerida.

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

Enlaces útiles

Suscribirse

Recibe nuevas publicaciones sobre sistemas, infraestructura e ingeniería de IA.