🖥️ Diapositivas — Sesión 02 (vie 2 oct)
¿Qué necesita para ejecutar su código Python?¶
Python. La mayoría de los paquetes actuales requiere Python 3.10 o más nuevo; este libro usa Python 3.12. Su computadora puede venir con Python preinstalado, pero nunca dependa del Python del sistema — use un gestor de entornos (abajo).
Algo de código: archivos con extensión
.py, o cuadernos.Dependencias: módulos que contienen funciones relacionadas (por ejemplo, numpy, scipy, pandas, scikit-learn), importados en el código Python como
import numpy as np
Para ejecutar código Python con las dependencias correctas, usted define un entorno: una versión de Python + algunos paquetes + las versiones de esos paquetes.
¿Qué son los entornos virtuales?¶
Un entorno virtual es una copia aislada de un intérprete de Python específico junto con versiones específicas de bibliotecas externas.
- Puede tener en su computadora proyectos distintos que necesitan versiones distintas de los paquetes.
- Le pasa su código a un colega, o a un asistente de IA que lo ejecuta en otra máquina.
- Algunos de sus paquetes dependen de otros paquetes, en versiones específicas. ¿Cómo asegura que todos tengan la versión correcta de todo?
La respuesta: nunca instale paquetes «globalmente». Cada proyecto recibe su propio entorno, declarado en un archivo que vive en el repositorio del proyecto.
Las herramientas de 2026¶
Varias herramientas gestionan entornos. Este es el mapa:
- pixi — lo que usa este libro. Un gestor rápido, por proyecto, que instala paquetes de conda-forge y de PyPI y escribe un archivo de bloqueo (lockfile) automáticamente.
- uv — un gestor rápido para proyectos de Python puro (solo paquetes de PyPI). Buena opción cuando no necesita ninguna pila geoespacial compilada ni de GPU desde conda-forge.
- miniforge / mamba — una distribución mínima de conda preconfigurada para el canal comunitario conda-forge, con
mambacomo resolvedor rápido. Úsela si quiere los flujos clásicos de conda. - conda — el gestor de paquetes científico original. Sigue en todas partes, y sus conceptos (canales,
environment.yml) siguen siendo conocimiento de fondo que vale la pena tener.
Ya no recomendamos descargar Anaconda: el licenciamiento de la distribución Anaconda cambió en 2024 y su canal por defecto ahora requiere licencia de pago para muchos usos institucionales. miniforge con conda-forge evita el problema por completo.
pixi: lo que usa este libro¶
pixi gestiona entornos por proyecto. El entorno se declara en pixi.toml, se resuelve en pixi.lock y se instala bajo .pixi/ dentro del directorio del proyecto. No hay paso de «activar el entorno correcto» que se pueda olvidar: pixi run siempre usa el entorno propio del proyecto.
Instale primero pixi (una vez por máquina). En macOS y Linux:
curl -fsSL https://pixi.sh/install.sh | sho, en macOS con Homebrew, brew install pixi. Reinicie la terminal y verifique:
pixi --versionEn Windows, trabaje dentro de WSL2 y use el comando de Linux de arriba; vea la guía de montaje en 1.9.
Inicie un proyecto:
pixi init myproject
cd myprojectAgregue paquetes:
pixi add python=3.12 numpy pandas matplotlibEsto edita pixi.toml:
[workspace]
name = "myproject"
channels = ["conda-forge"]
platforms = ["osx-arm64", "linux-64"]
[dependencies]
python = "3.12.*"
numpy = ">=2"
pandas = ">=2.2"
matplotlib = "*"y escribe pixi.lock, que registra la versión exacta y el hash de cada paquete (incluidas las dependencias transitivas) para cada plataforma listada. Confirme (commit) ambos archivos.
Ejecute cosas dentro del entorno:
pixi run python analysis.py
pixi run jupyter labEste libro mismo se construye así: pixi install y luego pixi run build desde la raíz del repositorio.
Los archivos de bloqueo son reproducibilidad. pixi.toml dice qué pidió usted («numpy, versión 2 como mínimo»); pixi.lock dice qué obtuvo en realidad (numpy 2.5.0, esta compilación, este hash). Quien clone su repositorio y ejecute pixi install en la misma plataforma obtiene el conjunto idéntico de paquetes — el mes que viene, o en una máquina en la nube. El archivo de bloqueo fija los paquetes por plataforma: cada entrada bajo platforms en pixi.toml recibe su propia lista resuelta, de modo que un colaborador en otro sistema operativo obtiene las mismas versiones de paquetes en las compilaciones de ese sistema, no un entorno idéntico byte a byte. Los resultados numéricos aún pueden diferir ligeramente entre plataformas y hardware; 5.1 trata la reproducibilidad como acuerdo dentro de una tolerancia declarada precisamente por esta razón. Los entornos fijados son la diferencia entre «en mi máquina funciona» y un análisis reproducible, y son el cimiento de las prácticas de flujo de trabajo del capítulo 5.
uv: para proyectos de Python puro¶
uv cumple el mismo papel para proyectos solo-PyPI, usando el pyproject.toml estándar:
uv init myproject
uv add numpy pandas
uv run python analysis.pyEscribe un uv.lock con la misma lógica de reproducibilidad. Si su proyecto necesita paquetes de conda-forge (GDAL, compilaciones de PyTorch con CUDA, obspy), prefiera pixi.
Trasfondo de conda¶
Encontrará archivos environment.yml en muchos repositorios de geociencias, así que debe poder leerlos y usarlos. Con miniforge instalado:
conda env create --file environment.yml
conda env list
conda activate myenv
conda deactivate
conda env remove --yes --name myenv(Con mamba, reemplace conda por mamba para resoluciones más rápidas.)
Ejemplo de environment.yml¶
name: mlgeo
channels:
- conda-forge
dependencies:
- python=3.12
- jupyter
- matplotlib
- numpy>=2
- pandas>=2.2
- scipy
- scikit-learn
- pytorchpixi puede importarlos: pixi init --import environment.yml.
Congelar un entorno de pip¶
El idioma más viejo para registrar versiones exactas en flujos basados en pip:
pip freeze > requirements.txtque produce entradas fijadas como
matplotlib==3.10.0
numpy==2.2.1
pandas==2.2.3Esto es una instantánea plana, sin hashes ni información de plataforma — el ancestro débil del archivo de bloqueo. Todavía funciona, pero para proyectos nuevos prefiera pixi o uv, que mantienen el archivo de bloqueo por usted.