Tutorial de introducción a uv -- Herramienta de gestión de paquetes y entornos de Python
En el desarrollo con Python, la gestión de paquetes y el aislamiento de entornos son problemas que todo desarrollador encuentra. Ya sea la lentitud de pip, lo engorroso de virtualenv o la pesadez de conda,uvtodo hace que los desarrolladores esperen una solución más eficiente.
¿Qué es uv?
uv es un gestor de paquetes y entornos de Python desarrollado por la empresa Astral y escrito en Rust. Su objetivo principal es ofrecer un rendimiento de 10 a 100 veces más rápido que las herramientas existentes, manteniendo al mismo tiempo una experiencia de usuario simple e intuitiva.
uv puede reemplazar herramientas como pip, virtualenv, pip-tools y pyenv, ofreciendo un servicio integral que incluye gestión de dependencias, creación de entornos virtuales y gestión de versiones de Python.
Ventajas de uv
- Velocidad extrema: Debido a que está escrito en Rust, el rendimiento de uv supera con creces al de pip y otras herramientas de gestión de paquetes; la velocidad de instalación de dependencias puede mejorar de 10 a 100 veces.
- Integración de funciones: Integra la resolución de dependencias, la instalación de paquetes, la gestión de entornos y la gestión de versiones de Python en una sola herramienta, sin necesidad de instalar y aprender múltiples herramientas.
- Construcción determinista: uv generará un
uv.lockarchivo, lo que garantiza que se puedan instalar exactamente las mismas versiones de dependencias en cualquier entorno, evitando el problema de "en mi máquina funciona". - Compatibilidad con herramientas existentes: uv puede manejar
requirements.txtypyproject.toml, y puede reemplazar sin problemas a pip en los flujos de trabajo existentes.
Instalación de uv
Instalación en macOS
Se recomienda instalarlo con Homebrew:
brew install uv
O usar el script de instalación oficial:
curl -LsSf https://astral.sh/uv/install.sh | sh
Instalación en Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
Instalación en Windows
Usando Winget:
winget install uv
O usar el script de instalación oficial (PowerShell):
irm https://astral.sh/uv/install.ps1 | iex
Después de la instalación, verifica si se realizó correctamente:
uv --version
Una salida similar a la siguiente indica que la instalación fue exitosa:
uv 0.8.14 (Homebrew 2025-08-28)
1. Gestión de versiones de Python
uv tiene incorporada la gestión de versiones de Python, sin necesidad de instalar herramientas adicionales como pyenv.
Ver las versiones disponibles de Python:
uv python list
El resultado es similar al siguiente:
cpython-3.14.0rc2-macos-aarch64-none <download available> cpython-3.13.7-macos-aarch64-none <download available> cpython-3.12.11-macos-aarch64-none <download available> cpython-3.11.13-macos-aarch64-none <download available> cpython-3.10.18-macos-aarch64-none <download available> cpython-3.9.6-macos-aarch64-none /usr/bin/python3 pypy-3.11.13-macos-aarch64-none <download available>
Instalar una versión específica de Python:
# 安装最新的 Python 3.12 uv python install 3.12 # 安装特定版本 uv python install 3.11.6 # 安装 PyPy 版本 uv python install pypy3.10
Establecer la versión de Python predeterminada global:
uv python default 3.12
Fijar la versión de Python para el proyecto actual (se creará un archivo.python-version):
uv python pin 3.12
Después de ejecutar este comando, se generará un archivo .python-version en el proyecto actual. Al abrirlo, se mostrará el contenido del número de versión:
3.12
2. Gestión de entornos virtuales
Crear un entorno virtual:
# 在当前目录创建名为 .venv 的虚拟环境(使用系统默认 Python) uv venv # 使用指定 Python 版本创建虚拟环境 uv venv --python 3.12
Activar el entorno virtual:
# macOS / Linux source .venv/bin/activate # Windows(PowerShell) .venv\Scripts\activate
Salir del entorno virtual:
deactivate
En el desarrollo diario se puede usar
uv runpara ejecutar scripts directamente, sin necesidad de activar manualmente el entorno virtual.
3. Gestión de paquetes (modo compatible con pip)
uv proporciona una interfaz de comandos totalmente compatible con pip, que puede reemplazar directamente los comandos de pip en los flujos de trabajo existentes:
Instalar paquetes:
# 安装最新版本 uv pip install requests # 安装特定版本 uv pip install requests==2.31.0 # 从 requirements.txt 批量安装 uv pip install -r requirements.txt
Actualizar paquetes:
uv pip install --upgrade requests
Desinstalar paquetes:
uv pip uninstall requests
Ver los paquetes instalados:
uv pip list
Exportar las dependencias del entorno actual a requirements.txt:
uv pip freeze > requirements.txt
4. Gestión de proyectos (método recomendado)
uv admite un enfoque moderno de gestión de proyectos centrado enpyproject.toml, lo cual es un método de uso más recomendado que el modo pip, especialmente adecuado para la colaboración en equipo y el despliegue en múltiples entornos.
Inicializar un proyecto
uv init my_project cd my_project
Esto creará la siguiente estructura básica de proyecto:
my_project/ ├── pyproject.toml # 项目配置和依赖声明 ├── .python-version # 固定 Python 版本 ├── README.md └── main.py
Agregar y eliminar dependencias
En el modo de proyecto, se recomienda usaruv addyuv removepara gestionar las dependencias, y se actualizarán automáticamentepyproject.tomlyuv.lock:
# 添加生产依赖 uv add requests # 添加指定版本的依赖 uv add "requests>=2.31.0" # 添加开发依赖(只在开发环境使用,如测试框架) uv add --dev pytest ruff # 移除依赖 uv remove requests
Instalar todas las dependencias del proyecto (uv sync)
Después de clonar un proyecto o actualizarpyproject.toml, ejecuta el siguiente comando para instalar todas las dependencias con un solo clic:
uv sync
Explicación de uv sync:Similar a
pip install -r requirements.txt, segúnpyproject.tomlyuv.lockinstalará todas las dependencias para garantizar que el entorno sea exactamente el mismo que el de otros desarrolladores. Si la instalación es lenta, se puede configurar un espejo doméstico enpyproject.toml:[tool.uv] index-url = "https://pypi.tuna.tsinghua.edu.cn/simple"
Generar/actualizar el archivo de bloqueo
uv lock
Este comando analizará las dependencias enpyproject.tomly generará (o actualizará) el archivouv.lock.uv.lockDebe enviarse al repositorio de versiones para garantizar que todos los miembros del equipo utilicen exactamente las mismas versiones de dependencias.
5. Ejecutar scripts (uv run)
uv runes un comando muy práctico en uv que permite, sin necesidad de activar manualmente el entorno virtual,ejecutar scripts o comandos directamente; uv encontrará y usará automáticamente el entorno correcto:
# 直接运行 Python 脚本 uv run main.py # 运行项目中的测试 uv run pytest # 运行任意命令(在虚拟环境的上下文中执行) uv run python -c "import requests; print(requests.__version__)"
El uso deuv runen comparación con la activación manual del entorno tiene la ventaja de que no se utilizará por error una versión incorrecta de Python, ni se olvidará de activar el entorno y no se encuentren los paquetes. Es especialmente adecuado para CI/CD y automatización de scripts.
Migrar a uv
Si estás utilizando otras herramientas, puedes migrar a uv de la siguiente manera:
Migrar desde pip + virtualenv:
# 创建并激活虚拟环境 uv venv source .venv/bin/activate # 安装原有依赖 uv pip install -r requirements.txt
Migrar desde pip-tools:
# 编译依赖(替代 pip-compile) uv pip compile requirements.in -o requirements.txt # 同步环境(替代 pip-sync) uv pip sync requirements.txt
Migrar desde poetry o pdm:
# 直接使用现有的 pyproject.toml uv syncOtras extensiones