# Entorno de Python con uv

> Instala uv y Python 3.12 paso a paso y usa uv para fijar la versión de Python, instalar dependencias y ejecutar cada ejemplo del libro sin activar entornos virtuales a mano.

- Capítulo: -0.9
- Dificultad: básico
- Fuente: https://book-ai-engineer.lucenyo.dev/es/lessons/preparacion/entorno-python-uv/

---
Para todo lo relacionado con Python —instalar la versión correcta, gestionar dependencias y ejecutar cada ejemplo— usamos [uv](https://docs.astral.sh/uv/): un único binario que sustituye a `pip`, `venv`, `pyenv` y `pip-tools` a la vez, y que es entre 10 y 100 veces más rápido que `pip` instalando paquetes. No necesitas tener Python instalado de antemano: uv también se encarga de eso.

---

## Instalar uv

```bash
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
```

```powershell
# Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
```

Si prefieres otro método (Homebrew, `pipx`, el paquete de tu distribución de Linux...), la [guía oficial de instalación](https://docs.astral.sh/uv/getting-started/installation/) los recoge todos. Cierra y vuelve a abrir la terminal si el comando `uv` no aparece disponible enseguida, y comprueba que todo ha ido bien:

```bash
uv --version
```

---

## Instalar Python con uv

No hace falta que instales Python por tu cuenta ni que lo descargues de python.org: uv descarga e instala las versiones de Python que le pidas, aisladas del resto del sistema.

```bash
uv python install 3.12
```

Este libro usa Python 3.12 en todos sus ejemplos. Si ya tienes otra versión instalada en tu sistema (o ninguna), no importa: en el siguiente paso vas a fijar 3.12 por proyecto, así que cada ejemplo del libro usará siempre esa versión, independientemente de lo que haya instalado globalmente.

---

## Crear un proyecto

Con uv y Python 3.12 ya disponibles, cada proyecto Python de este libro se crea igual:

```bash
uv init
uv python pin 3.12
```

`uv init` crea el `pyproject.toml` del proyecto; `uv python pin 3.12` fija la versión de Python que usan todos los ejemplos del libro, incluso si tu sistema tiene otra versión instalada.

---

## Instalar dependencias

Cada capítulo indica, en su propia sección "Preparar el proyecto", qué paquetes necesita además de lo básico —normalmente el SDK de Anthropic y, cuando hay salida estructurada, Pydantic—. Añádelos con:

```bash
uv add <paquete>
```

No hace falta instalar de antemano todo lo que usará el libro: cada capítulo pide solo lo que necesita, cuando lo necesita.

---

## Ejecutar los ejemplos

```bash
uv run main.py
```

`uv run` se asegura de que el entorno virtual del proyecto (`.venv/`, que nunca debe subirse a Git) existe y tiene las dependencias del `pyproject.toml` instaladas antes de ejecutar el script. El fichero `uv.lock` que genera uv fija las versiones exactas de cada dependencia, directa o transitiva: commitéalo para que cualquiera que clone el repo obtenga exactamente los mismos paquetes.
