De todas las críticas dirigidas a Pitón, uno de los más válidos (y lamentablemente duradero) es el estado caótico de su ecosistema de envases. Es menos complicado de lo que solía ser, como lo ilustra tan memorablemente XKCD, pero todavía no es ideal. Terceros como poesía y pipenv han llenado los vacíos ofreciendo herramientas construidas sobre los estándares existentes de Python pero diseñadas en torno a flujos de trabajo más elegantes.
Ahora tenemos uv
, la última incorporación al ecosistema de instalación de paquetes de Python. Creado por Astral, el mismo equipo que mantiene el fallar Herramientas de linting de Python, uv
pretende ser un reemplazo todo en uno para pip
, venv
y muchas otras herramientas de gestión de proyectos de línea de comandos para Python. A diferencia de otros administradores de proyectos de Python, uv
está escrito principalmente en Rust, cuyo objetivo es hacerlo más rápido que otras herramientas de su clase, potencialmente en órdenes de magnitud.
Configurar uv y trabajar con venvs
Hay Algunas formas diferentes de instalar uv.. Una manera común y fácil de comenzar es usar pip
instalar uv
en una instalación subyacente de Python. Si esa instalación de Python está en el sistema PATH
puedes invocar uv
con solo escribir uv
en la línea de comando.
Una vez que tengas uv
instalado, puede crear un entorno virtual en un directorio determinado con el comando uv venv
. Si no proporciona un nombre de directorio usted mismo, el venv se creará en el directorio .venv
.
el venv uv
create se comportará exactamente como un entorno virtual normal, con un par de cambios menores. Activa el venv de la misma manera que lo haría con uno normal, por ejemplo, source .venv/bin/activate
en Linux/macOS, o .venv\Scripts\activate
en Microsoft Windows.
Sin embargo, el venv uv
crea voluntad no tener pip
o setuptools
instalado por defecto. Para uv
-proyecto gestionado, se espera que utilice uv
herramientas de gestión siempre que sea posible.
Usando pip con uv
uv
mantiene su propia versión de pip
al que accede explícitamente a través de uv
. Los comandos son los mismos:
uv pip install flask
uv
apoya la gran mayoría de los comunes pip
comportamientos, como instalaciones editables, selección de componentes opcionales (p. ej., uv pip install "flask[dotenv]"
), o instalar desde un git
fuente.
algunos comportamientos aún no son compatibles, pero estos no deberían interferir con su trabajo diario. Sin embargo, algunas cosas son notablemente diferentes.
Usando ‘uv pip’ con git
Si desea instalar un requisito desde un git
repositorio o GitHub, tenga en cuenta que necesitará usar una sintaxis ligeramente diferente a la que usaría con pip
solo. Deberá especificar el nombre del paquete a instalar, @
y luego la fuente:
uv pip install "<package_name> @ https://github.com/<user>/<repo>"
Tenga en cuenta las comillas, que son necesarias para escapar del @
adecuadamente. También tendrás que pasar sintaxis especial utilizar la autenticación con git
Enlaces.
Usando ‘uv pip frozen’ en lugar de ‘pip list’
Para enumerar lo que está instalado en un venv determinado, utilice uv pip freeze
en lugar de uv pip list
. Los resultados se pueden redirigir a un archivo como se haría normalmente con pip freeze
.
Bloquear, compilar y sincronizar dependencias
uv
proporciona varias funciones para bloquear y sincronizar dependencias con la lista de requisitos de un proyecto.
cuando usas uv pip freeze
la lista resultante tendrá requisitos de versión explícitos para cada paquete, lo que significa que estará «bloqueada» para las versiones específicas en cuestión.
Si desea tomar un existente pyproject.toml
o requirements.in
archivo y generar una dependencia bloqueada establecida como requirement.txt
usar:
uv pip compile pyproject.toml -o requirements.txt
# or ...
uv pip compile requirements.in -o requirements.txt
Usando pip-compile y pip-sync con uv
uv
El objetivo a largo plazo es proporcionar alternativas para múltiples herramientas Python. Dos de las herramientas uv
pueden sustituir actualmente, aunque de forma primordial, son pip-compile
y pip-sync
.
pip-sync
toma el entorno virtual de un proyecto y sincroniza su conjunto de paquetes con una lista de paquetes proporcionada, generalmente un requirements.txt
archivo. Con uv
para sincronizar las dependencias instaladas de un proyecto con una lista de dependencias bloqueadas, de la misma manera que pip-sync
herramienta, utilice:
uv pip sync requirements.txt
El pip-compile
herramienta genera un requirements.in
archivo, que enumera las dependencias «bloqueadas», de un archivo existente pyproject.toml
o requirements.txt
archivo:
uv pip compile .\pyproject.toml -o requirements.in
Esto guarda una lista de dependencias con versión bloqueada enumeradas en pyproject.toml
en requirements.in
que luego se puede utilizar para restaurar los requisitos que coinciden con una configuración específica.
Las limitaciones de la luz ultravioleta.
El uv
El proyecto aún se encuentra en sus primeras etapas, por lo que aún no admite toda la gama de funciones previstas. Muchas funciones están incompletas (aunque están documentadas como tales) y está previsto que se agreguen muchas más más adelante.
Otro tema para uv
está escrito en Rust, que por supuesto también es uno de sus puntos fuertes. Estar escrito en Rust hace uv
rápido y eficiente, pero también podría dificultar la contribución para los usuarios de Python. Un desarrollador de Python que quiera contribuir a las herramientas de Python necesita principalmente aprender el proceso particular para contribuir al proyecto. Pero un desarrollador de Python que quiera contribuir a uv
o cualquier otra herramienta de Python escrita en Rust, también necesita aprender Rust.
Debido a que escribir herramientas Python en Rust es todavía un fenómeno relativamente nuevo, no está claro cuánto impacto tendrá en cómo los desarrolladores de Python contribuyen a dichos proyectos. Pero está claro que Rust se está convirtiendo en una opción válida para escribir herramientas Python, aunque solo sea por anteponer el rendimiento.
Copyright © 2024 IDG Communications, Inc.