Clase 16: uv


Hasta ahora hemos utilizado conda para manejar las dependencias de un código de Python. conda es una aplicación que permite crear ambientes, esto es, colecciones de módulos interdependientes en conjunto con una versión de Python en particular.

En los últimos años han aparecido otras aplicaciones que permiten manejar dependencias por proyecto. Esto es algo habitual en otros lenguajes, pero ha comenzado a ganar popularidad en Python. Herramientas como poetry o uv permiten instalar módulos para un proyecto particular que reside en un determinado directorio.

Otra de las ventajas que ofrecen estas nuevas aplicaciones es su velocidad: en su creación se ha puesto el foco en que la carga de dependencias sea rápida y consistente.

Para instalar uv, pueden referirse a la documentación.

Creando proyectos

Para crear un proyecto con uv hacemos

uv init uv-demo

donde uv-demo es el nombre del proyecto.

En este caso uv crea un directorio denominado uv-demo con varios archivos en él: - README.md: el readme del proyecto - hello.py: Una plantilla mínima de código - pyproject.toml: Un archivo de configuración del proyecto - .python-version: La versión de python que está asociada al proyecto.

Cómo corremos entonces hello.py? Por lo pronto, la versión de python que se usará es aquella que venimos usando hasta ahora, que es la del ambiente que instalamos con conda.

Sin embargo, uv permite crear ambientes virtuales asociados al proyecto con:

uv venv --python=python3.13

donde con la opción --python indicamos qué versión de Python queremos utilizar.

Para activar este entorno particular de nuestro proyecto hacemos:

source .venv/bin/activate

o en Windows

.venv\Scripts\activate

y corremos python en forma habitual. Para desactivar el entorno,

deactivate

Corriendo con uv run

Podemos también correr el código con

uv run hello.py

En este caso, uv utilizará la versión de python de acuerdo al siguiente orden de prioridades: - Instalaciones de python incluidas en la variable del sistema UV_PYTHON_INSTALL_DIR. - Un interprete de Python en el PATH tales como python, python3, o python3.x en macOS y Linux, o python.exe en Windows. - Si existe el archivo .python-version, utilizará esa versión de Python. Si la versión de python no existe, creará un ambiente virtual en el directorio .venv con esa versión.

Atención: uv ejecutará el código con el intérprete de Python que verifique las condiciones de la variable require-python en pyproject.toml. Si no encontrara una versión adecuada, dará un error y sugerirá las acciones correspondientes.

Entonces: - .python-version → Define qué intérprete se usa - requires-python en pyproject.toml → Define qué versiones son compatibles con tu código

Agregando dependencias

Para agregar dependencias al proyecto, usamos uv add

uv add matplotlib pandas

Y notaremos que se agregan los módulos en las dependencias del proyecto en pyproject.toml.

uv es más eficiente y veloz al manejar las dependencias. Pruébelo Ud. mismo.

Para agregar dependencias, también se puede editar el archivo pyproject.toml, en la variable [dependencies]

Existen diferentes formas de especificar requisitos de versión:

  • >=3.10: Python 3.10 o superior

  • >=3.10,<3.12: Python 3.10 o 3.11, pero no 3.12

  • ==3.10: Exactamente Python 3.10

  • ~=3.10: Compatible con Python 3.10.x (cualquier versión menor)