uv - Nuevo paquete de Python, gestor de proyectos y entornos
Buenas cosas sobre Python uv
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.
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
.
¿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 | Sí | No (requiere pyenv) | No |
Soporte para archivos de bloqueo | 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 tu sistema, sigue estos pasos sencillos:
Instalación
- 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
.
- 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.
- 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:
Este comando descarga e instala la última versión estable de Python disponible.uv python install
- Instalar una versión específica:
Esto instala la última versión de parche de Python 3.12 (por ejemplo, 3.12.3).uv python install 3.12
- Instalar una versión exacta de parche:
Esto instala exactamente Python 3.12.3.uv python install 3.12.3
- Instalar múltiples versiones:
Esto instala Python 3.9, 3.10 y 3.11.uv python install 3.9 3.10 3.11
- Instalar una versión que coincida con una restricción:
Esto cambia el requisito de versión de Python del proyecto.uv python install '>=3.8,=3.11"
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 entornoUV_PYTHON_INSTALL_DIR
, donde almacena sus propias versiones de Python gestionadas. - Ruta del sistema (PATH):
En macOS y Linux, UV busca ejecutables llamadospython
,python3
opython3.x
(dondex
es un número de versión) en los directorios listados en la ruta del sistemaPATH
. En Windows, buscapython.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 depy --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
- Página principal de uv: https://docs.astral.sh/uv/
- Paquete de uv: https://pypi.org/project/uv/
- Repositorio de GitHub de uv: https://github.com/astral-sh/uv/
- Hoja de trucos de Python
- Hoja de trucos de Conda
- Hoja de trucos de venv
- Hoja de trucos de Bash
- Hoja de trucos de Ollama
- Hoja de trucos de venv
- Popularidad de lenguajes de programación y frameworks