Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

🖥️ Diapositivas — Sesión 02 (vie 2 oct)

¿Qué necesita para ejecutar su código Python?

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.

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:

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 | sh

o, en macOS con Homebrew, brew install pixi. Reinicie la terminal y verifique:

  pixi --version

En 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 myproject

Agregue paquetes:

  pixi add python=3.12 numpy pandas matplotlib

Esto 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 lab

Este 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.py

Escribe 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
  - pytorch

pixi 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.txt

que produce entradas fijadas como

  matplotlib==3.10.0
  numpy==2.2.1
  pandas==2.2.3

Esto 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.