Entorno de trabajo¶
Esta página es la puerta de entrada al curso. Te lleva desde la instalación de las herramientas hasta una comprobación observable del proyecto.
En este recorrido usamos Python 3.14, el gestor de proyectos
uv, Git y cuadernos interactivos marimo. La
referencia completa de uv está en uv; aquí solo necesitas el
recorrido inicial.
Antes de empezar: la terminal¶
Casi todo lo que se hace en esta página se escribe en una terminal (también
llamada consola o línea de comandos): una ventana donde escribes órdenes de
texto y el sistema responde con texto. Cada orden se escribe en una línea y se
ejecuta al pulsar Intro.
| Sistema | Cómo abrir una terminal |
|---|---|
| Windows | Menú Inicio → escribe PowerShell → abre Windows PowerShell |
| macOS | Cmd+Espacio → escribe Terminal |
| Linux | Ctrl+Alt+T o busca Terminal en el menú de aplicaciones |
Cuando tengas VS Code instalado, usarás la terminal integrada del editor (Terminal → Nueva terminal), que es la misma terminal dentro de la ventana del editor. En los bloques de esta página, cada línea es una orden distinta: escríbelas de una en una y espera a que termine cada una.
El orden recomendado de instalación es: VS Code (ver VS Code),
Git (ver Git y GitHub) y
uv (en esta página). uv se encarga después de descargar Python 3.14: no
necesitas instalar Python por separado.
Resultado esperado¶
Al terminar esta página deberías poder:
- abrir la carpeta correcta del proyecto;
- tener un Python y un entorno virtual
.venvasociados al proyecto; - sincronizar las dependencias desde
pyproject.tomlyuv.lock; - ejecutar una comprobación con
uv runsin depender del Python global; - diagnosticar los problemas básicos de ruta, Python y dependencias.
La evidencia mínima de que el entorno está preparado será similar a:
Las versiones concretas pueden cambiar al actualizar el lockfile, pero el comando debe terminar sin errores.
Elige tu punto de partida¶
| Situación | Qué debes hacer |
|---|---|
| Vas a crear un proyecto propio (lo habitual al empezar: es lo que hace el capítulo 1.1 de Programación de IA) | Ruta B: uv init, fijar Python y añadir dependencias |
| Te han dado un repositorio ya preparado | Ruta A: clonar o abrir la carpeta y ejecutar uv sync --locked |
No mezcles las dos rutas
No ejecutes uv init dentro de un repositorio que ya tiene su propio
pyproject.toml. Para un proyecto existente, uv sync --locked reproduce
el entorno sin resolver versiones nuevas; uv init es para iniciar una
carpeta nueva.
Herramientas del curso¶
| Herramienta | Para qué la usamos |
|---|---|
uv |
Gestionar Python, dependencias y entornos virtuales |
Git |
Guardar el historial y colaborar mediante GitHub |
marimo |
Crear y ejecutar cuadernos reactivos |
numpy |
Arrays y cálculo numérico |
pandas |
Tablas y análisis de datos |
matplotlib y seaborn |
Visualización de datos |
scikit-learn |
Modelos y evaluación de aprendizaje automático |
El proyecto completo del curso declara además las librerías de las unidades
posteriores (polars, duckdb, FastAPI, PyTorch, MLflow…). La lista vigente
está en su pyproject.toml; no tienes que instalar cada paquete por separado
después de clonar el repositorio.
Por qué estas herramientas y no otras¶
Ninguna de las elecciones es casual; conviene que sepas qué alternativas existen y por qué las descartamos:
uvfrente apip+venv+requirements.txt. Conpipyvenvgestionas tres cosas por separado (intérprete, entorno y dependencias) y el archivo de requisitos no fija las versiones exactas de todo lo que se instala, así que dos estudiantes con el mismorequirements.txtpueden acabar con entornos distintos.uvlo une todo en un flujo: instala intérpretes, crea el entorno y fija cada versión enuv.lock, de modo queuv syncreproduce el mismo entorno en cualquier equipo. Además es extremadamente rápido. Es la herramienta más reciente de la lista y evoluciona rápido, pero su modo proyecto (pyproject.toml+ lockfile) es el estándar hacia el que se mueve el ecosistema Python.- VS Code frente a otros editores. Es gratuito, multiplataforma y con la extensión de Python (y la de marimo) cubre editor, depurador, terminal y control de versiones en una sola aplicación. Alternativas como PyCharm son excelentes pero de pago en su versión completa; el objetivo del curso es que sepas trabajar con el entorno que encontrarás en la mayoría de equipos.
- Git + GitHub frente a nada o a copias de carpeta. Sin control de versiones, cada cambio sobrescribe el anterior y no hay forma de volver atrás ni de colaborar. Git guarda el historial localmente y GitHub lo pone en común; son el estándar de facto de la industria, así que lo que aprendes aquí lo usarás igual en tu próximo trabajo.
- marimo frente a Jupyter. Lo detallamos en la
guía de marimo: en Jupyter el estado oculto y la ejecución
desordenada de celdas producen cuadernos irreproducibles; marimo ejecuta
como grafo reactivo y guarda el cuaderno como
.pyversionable. - Librerías de datos (
numpy,pandas,scikit-learn…). Aquí no hay elección: son el estándar de facto del análisis de datos y del ML en Python, con la comunidad, la documentación y el ecosistema más grandes. Todo lo que aprendas con ellas se transfiere a cualquier empleo del sector.
Si en el futuro trabajas con otras herramientas (Poetry, Conda, PyCharm, Databricks…), los conceptos son los mismos: entornos aislados, dependencias fijadas, historial de versiones y código reproducible. Cambia la herramienta, no la idea.
Instalar uv¶
uv se instala una sola vez por equipo. Elige tu sistema:
Cierra y vuelve a abrir la terminal si el comando aún no aparece. Comprueba la instalación:
Salida esperada: una línea como uv 0.10.4. El número depende de la
versión instalada.
Si prefieres otro método, como Homebrew o winget, consulta la
documentación oficial de uv. No necesitas
instalar las dependencias del curso con pip.
Ruta A: preparar el repositorio del curso¶
Si todavía no tienes una copia local, clona el repositorio desde GitHub en una terminal normal. Usa la URL que te proporcione el aula:
Si la carpeta ya está en tu equipo, omite git clone y entra directamente en
ella con cd.
Desde la raíz del repositorio ejecuta:
uv sync --locked
uv run python --version
uv run marimo --version
uv run python -c "import marimo, numpy, pandas, sklearn; print('Dependencias principales disponibles')"
Qué hace cada paso:
uv sync --lockedcrea.venvsi hace falta, comprueba el lockfile e instala las dependencias del proyecto sin cambiar su resolución.uv runejecuta los comandos con el Python y los paquetes del proyecto.
La primera sincronización del repositorio completo es grande
Si el repositorio incluye las dependencias de todo el curso (redes
neuronales, MLflow, bases de datos vectoriales…), el primer uv sync
descarga varios GB y puede tardar bastante. Hazlo con buena conexión y
con tiempo, no al principio de una sesión de clase. Las siguientes
sincronizaciones reutilizan la caché de uv y son mucho más rápidas.
Salida esperada en el entorno actual del curso:
El comando puede mostrar una línea Resolved ... y aun así terminar
correctamente. Lo importante es que finalice con código 0; si el lockfile no
corresponde con pyproject.toml, --locked detiene el proceso para que no
continúes con un entorno distinto del del curso.
Un entorno virtual por proyecto
.venv contiene la instalación local de Python y los paquetes del
proyecto. No se sube a Git: se vuelve a crear con uv sync. Así dos
proyectos pueden usar versiones distintas sin mezclarlas.
Ruta B: crear un proyecto desde cero¶
Usa esta ruta solo para una carpeta nueva. Abre una terminal normal y ejecuta:
mkdir mi_proyecto
cd mi_proyecto
uv init --python 3.14
uv add marimo numpy pandas matplotlib seaborn scikit-learn
uv run python -c "print('Proyecto preparado')"
uv init --python 3.14 crea la configuración inicial, establece
requires-python = ">=3.14" en pyproject.toml y genera .python-version con
3.14. uv add declara las librerías, actualiza uv.lock y prepara .venv.
No hace falta ejecutar uv python pin 3.14 justo después: en este recorrido
sería redundante. Ese comando sí resulta útil si el proyecto ya existe y
quieres crear o cambiar .python-version sin volver a inicializarlo. Cambiar
.python-version no amplía por sí solo el requisito requires-python del
proyecto; si también cambia la compatibilidad soportada, revisa
pyproject.toml.
Si uv no encuentra Python 3.14, instálalo y repite la operación:
Efecto observable: aparecen o se actualizan pyproject.toml,
.python-version, uv.lock y .venv; la última línea muestra Proyecto
preparado. Las líneas de resolución de paquetes pueden variar.
Qué archivos se han creado¶
| Archivo o carpeta | Función |
|---|---|
pyproject.toml |
Declara el proyecto, Python compatible y dependencias directas |
uv.lock |
Guarda versiones concretas y dependencias transitivas |
.python-version |
Indica la versión de Python preferida |
.venv |
Entorno virtual local, no se versiona |
Esta separación evita dos errores frecuentes: creer que instalar un paquete lo
declara automáticamente, o subir .venv esperando que otra persona pueda
reutilizarla. Para profundizar, consulta la referencia de uv.
Comandos mínimos del día a día¶
Desde la raíz del proyecto:
uv run python --version
uv run python -c "import pandas; print(pandas.__version__)"
Salida esperada: Python pertenece a la versión del proyecto (Python
3.14.x) y se muestra una versión de pandas; en el lockfile actual del curso
es 3.0.5.
No hace falta repetir uv sync cada día: uv run comprueba el entorno antes
de ejecutar. Usa uv sync --locked después de clonar, de cambiar de equipo o
cuando alguien haya modificado pyproject.toml o uv.lock. Tampoco hace
falta activar .venv para usar uv run.
Si algo falla¶
| Síntoma | Causa probable | Acción |
|---|---|---|
uv: command not found |
La instalación no está en el PATH de esta terminal |
Cierra y abre una terminal nueva; comprueba uv --version |
No pyproject.toml found |
Estás fuera de la raíz del proyecto | Ejecuta pwd, entra con cd en la carpeta correcta y repite |
No such file or directory: marimo |
El entorno no está sincronizado o marimo no está declarado |
En un proyecto propio, uv add marimo; en uno clonado, uv sync --locked. Después, uv run marimo --version |
En Windows, la ejecución de scripts está deshabilitada al instalar uv |
La política de PowerShell bloquea el instalador | Usa exactamente la orden de instalación de esta página, que incluye -ExecutionPolicy ByPass |
ModuleNotFoundError |
Falta la dependencia o se usa otro Python | Declárala con uv add y ejecuta el programa con uv run |
uv.lock necesita cambios |
pyproject.toml y el lockfile no coinciden |
Ejecuta uv lock, revisa el diff y vuelve a sincronizar |
No soluciones un ModuleNotFoundError instalando paquetes al azar en el Python
global. Primero comprueba la carpeta, el intérprete y la declaración de la
dependencia.
Comprobación final¶
Desde la raíz del repositorio del curso, ejecuta:
Salida esperada: puede aparecer Resolved ...; después debe aparecer:
Esta comprobación aporta una evidencia pequeña pero útil: la resolución es coherente y el intérprete del proyecto puede importar las dependencias principales. Las prácticas comprobarán después el comportamiento de cada ejemplo.
Versiones de las librerías
El lockfile actual usa pandas 3.x. No copies resultados de tutoriales
antiguos sin comprobar la versión instalada. En las unidades de datos
atenderemos a cambios relevantes de Pandas, como el dtype str por defecto
y Copy-on-Write.
Siguiente paso¶
Continúa con VS Code, el editor desde el que trabajarás; después vienen los cuadernos marimo, Git y GitHub y la referencia completa de uv.