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 variablerequire-python
enpyproject.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)