Python

uv: El Gestor de Paquetes y Proyectos Python Todo-en-Uno de Astral

uv es un gestor de paquetes y proyectos Python extremadamente rápido escrito en Rust, que reemplaza pip, pipx, poetry, pyenv y virtualenv con un rendimiento 10-100x más rápido.

Keeping this site alive takes effort — your support means everything.
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分! 無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!
uv: El Gestor de Paquetes y Proyectos Python Todo-en-Uno de Astral

El ecosistema de empaquetado de Python ha estado fragmentado durante mucho tiempo entre múltiples herramientas. ¿Necesita instalar paquetes? Use pip. ¿Necesita entornos aislados? Use venv o virtualenv. ¿Necesita gestión de dependencias? Use Poetry o Pipenv. ¿Necesita diferentes versiones de Python? Use pyenv. ¿Necesita instalar herramientas CLI? Use pipx. uv colapsa toda esta cadena de herramientas en un único binario Rust ultrarrápido que maneja cada flujo de trabajo de empaquetado de Python.

Creado por Astral – el mismo equipo detrás del linter Ruff y el verificador de tipos Ty – uv representa la culminación de su visión para una cadena de herramientas Python unificada. Escrito en Rust y diseñado para la velocidad, uv reemplaza la funcionalidad de pip, pipx, poetry, pyenv y virtualenv con una única interfaz de línea de comandos coherente que funciona de 10 a 100 veces más rápido que las herramientas que reemplaza.

El impacto en la experiencia del desarrollador es dramático. Instalar cientos de dependencias que a pip le tomaría minutos resolver y descargar se completa en segundos con uv. Crear entornos frescos para diferentes proyectos se vuelve virtualmente instantáneo. Y la capacidad de gestionar versiones de Python, entornos virtuales y dependencias de proyectos con una sola herramienta elimina la sobrecarga de configuración que históricamente ha afectado la configuración de proyectos Python.


¿Cómo Unifica uv la Cadena de Herramientas de Python?

La arquitectura de uv está construida alrededor de la idea de que las herramientas de empaquetado de Python comparten operaciones fundamentales – descargar paquetes, resolver dependencias, gestionar entornos – y que una única implementación optimizada puede superar a una colección de herramientas independientes.

graph LR
    A[CLI de uv] --> B[Instalador de Paquetes]
    A --> C[Resolvedor de Dependencias]
    A --> D[Gestor de Entornos]
    A --> E[Gestor de Proyectos]
    A --> F[Gestor de Versiones Python]
    A --> G[Instalador de Herramientas]
    B --> H[Registro de Paquetes\nPyPI / Índice Personalizado]
    C --> H
    D --> I[Entornos Virtuales]
    E --> J[Configuración de Proyecto]
    F --> K[Descargas de Python]
    G --> I

Cada subcomando en uv se asigna a una herramienta familiar: uv pip install reemplaza pip, uv venv reemplaza virtualenv, uv python install reemplaza pyenv, uv tool install reemplaza pipx, y uv init / uv add reemplaza la gestión de proyectos de poetry. Pero a diferencia de esas herramientas independientes, uv comparte un caché, resolvedor y motor de ejecución comunes en todas las operaciones.


¿Cómo se Compara uv con las Herramientas de Empaquetado Python Tradicionales?

La diferencia de rendimiento entre uv y las herramientas tradicionales es sustancial en cada dimensión de la gestión de paquetes.

OperaciónpipPoetryuvAceleración
Instalar 100 paquetes45-90s60-120s1-3s30-50x
Resolver dependencias30-60s45-90s0.5-2s60-100x
Crear entorno virtual2-5s3-8s<0.1s50x+
Instalar desde archivo de bloqueo30-45s40-60s0.5-1s60-80x
Instalar un solo paquete1-3s2-5s<0.1s20x+
Generación de archivo de bloqueo30-60s45-90s0.5-2s60-100x

Estos benchmarks asumen un caché caliente. Las instalaciones frías (primera vez, sin caché) siguen siendo 5-10x más rápidas que pip debido a descargas paralelas, manejo HTTP optimizado y un constructor de ruedas más rápido.


¿Qué Funciones de Gestión de Proyectos Proporciona uv?

Más allá de la instalación de paquetes, uv proporciona un flujo de trabajo completo de gestión de proyectos que compite con Poetry y PDM.

FunciónuvPoetryPDMpip + venv
Inicialización de proyectouv initpoetry initpdm initManual
Agregar dependenciauv addpoetry addpdm addEdición manual + pip install
Eliminar dependenciauv removepoetry removepdm removeEdición manual
Archivo de bloqueouv.lockpoetry.lockpdm.lockNinguno (pip freeze)
Gestión de versionesuv python installpyenv requeridopyenv requeridopyenv requerido
Scripts/tareasuv runpoetry runpdm runManual
Compilar/publicaruv build, uv publishpoetry build, poetry publishpdm build, pdm publishbuild + twine

La gestión de proyectos de uv está diseñada para ser intuitiva para usuarios de cualquier origen. uv add requests tanto agrega la dependencia a pyproject.toml como la instala, igual que poetry. uv sync instala todas las dependencias desde el archivo de bloqueo. Y uv run ejecuta un comando en el entorno virtual del proyecto sin requerir activación manual.


¿Cómo Maneja uv la Gestión de Versiones de Python?

La gestión de versiones de Python ha sido manejada tradicionalmente por pyenv, que requiere integración con el shell y puede ser complejo de configurar. uv incorpora la gestión de versiones directamente en la herramienta.

Tarea de Gestión de VersionesComando uvHerramienta TradicionalComando Tradicional
Listar versiones disponiblesuv python listpyenvpyenv install --list
Instalar una versión de Pythonuv python install 3.12pyenvpyenv install 3.12
Establecer versión Python del proyectouv python pin 3.12pyenvpyenv local 3.12
Encontrar Python actualuv python findwhich/wherewhich python
Usar Python específicouv run --python 3.11pyenvpyenv shell 3.11

uv descarga binarios de Python precompilados del proyecto Astral Python Build Standalone, que proporciona compilaciones de Python optimizadas para todas las plataformas principales. Esto elimina la necesidad de compilar Python desde el código fuente (como hace pyenv por defecto) y acelera dramáticamente la gestión de versiones de Python.


FAQ

¿Qué es uv? uv es un gestor de paquetes y proyectos Python extremadamente rápido escrito en Rust por Astral. Unifica la funcionalidad de pip, pipx, poetry, pyenv y virtualenv en una sola herramienta con rendimiento 10-100x más rápido.

¿Cómo logra uv su velocidad? uv está escrito en Rust y utiliza almacenamiento en caché agresivo, descargas paralelas y resolución de dependencias optimizada. Descarga paquetes en paralelo, almacena en caché extensivamente en disco y utiliza un solucionador SAT para la resolución de dependencias.

¿Puede uv reemplazar pip por completo? Sí, uv está diseñado como un reemplazo directo de pip. Soporta la interfaz de línea de comandos de pip, archivos de requisitos, instalaciones editables y todos los flujos de trabajo estándar de pip, pero funciona 10-100x más rápido.

¿uv soporta la gestión de entornos virtuales? Sí, uv proporciona gestión de entornos virtuales integrada similar a virtualenv y pyenv. Puede crear, activar y gestionar entornos Python con diferentes versiones de Python y conjuntos de dependencias.

¿Es uv adecuado para entornos CI/CD de producción? Sí, uv está específicamente diseñado para entornos CI/CD. Su velocidad, resolución determinista y almacenamiento en caché integrado lo hacen ideal para pipelines de compilación automatizada donde cada segundo cuenta.


Lecturas Adicionales

TAG
CATEGORIES