Ir al contenido principal

# ¿Tu script de Python falla por la versión? Ejecútalo con `uv` y olvídate del problema

¿Tu script de Python falla por la versión? Ejecútalo con `uv` y olvídate del problema Cuántas veces te ha pasado: descargas un script útil, lo ejecutas en la terminal y… `ModuleNotFoundError`. O peor aún: `This script requires Python 3.10, but you are running 3.12`. Empiezas a crear entornos virtuales, instalar versiones antiguas, pelear con `pip`, y al final terminas más cansado que programando. Si te suena familiar, respira hondo. Acaba de llegar `uv`, y está cambiando las reglas del juego. 🤔 ¿Qué es `uv` y por qué todo el mundo habla de él? `uv` es un gestor de paquetes y proyectos para Python escrito en **Rust** por el equipo detrás de `ruff` (el linter que ya está revolucionando cómo escribimos código). Su promesa es simple pero poderosa: **que Python vuelva a ser rápido, predecible y sin fricciones**. Pero lo que realmente lo hace especial no es solo su velocidad. Es su capacidad para **quitarle al usuario la responsabilidad de gestionar versiones y entornos**. `uv` hace el trabajo sucio en segundo plano. Tú solo escribes código y ejecutas. ✨ La magia: `uv run` y la resolución automática de versiones Imagina este escenario: tienes un script que necesita Python 3.11 y tres librerías específicas. En el flujo tradicional tendrías que: 1. Ver qué versión tienes instalada. 2. Crear un entorno virtual (`python -m venv .venv`). 3. Activarlo (`source .venv/bin/activate`). 4. Instalar dependencias (`pip install -r requirements.txt`). 5. Rezar para que no haya conflictos. Con `uv`, el proceso se reduce a **un solo comando**: ```bash uv run mi_script.py ``` Si el script indica qué versión de Python necesita (ya sea mediante un `pyproject.toml` o con comentarios inline), `uv` hace todo lo demás: - 🔍 Verifica si esa versión está en tu sistema. - 📥 Si no está, la descarga automáticamente desde fuentes oficiales. - 📦 Crea un entorno aislado en su caché global (sin ensuciar tu disco). - 🚀 Resuelve e instala dependencias en milisegundos. - ▶️ Ejecuta el script con la configuración exacta. Para el usuario final, es como hacer doble clic en un ejecutable. **Cero entornos manuales. Cero adivinanzas. Cero fricción.** 📋 ¿Qué más puede hacer `uv`? (Más allá de `uv run`) `uv` no es solo un "ejecutor automático". Es una suite completa que reemplaza `pip`, `pip-tools`, `virtualenv` y `pyenv` en la mayoría de casos: | Característica | Qué hace por ti | |----------------|-----------------| | 🚀 **Velocidad extrema** | Resuelve e instala paquetes 10-100x más rápido que `pip`. Usa caché global, resolución paralela y compilación optimizada. | | 🐍 **Gestión automática de Python** | Descarga e instala versiones exactas de CPython (o PyPy) bajo demanda. No rompes tu sistema. | | 📦 **Entornos virtuales invisibles** | Crea, sincroniza y gestiona `venv` automáticamente. Nunca más tendrás que escribir `activate`. | | 📝 **Scripts autocontenidos (PEP 723)** | Define dependencias y versión de Python *dentro del propio archivo `.py`*. Ideal para compartir herramientas. | | 🔁 **100% compatible con estándares** | Lee `pyproject.toml`, `requirements.txt`, `setup.py`. No reinventa la rueda, solo la hace girar más rápido. | | 🌐 **Instalación universal** | Un solo binario para Windows, macOS y Linux. Sin dependencias de sistema ni compilaciones locales. | | 🗂️ **Workspaces y proyectos** | Gestiona múltiples paquetes, librerías y aplicaciones en un solo repositorio con dependencias compartidas. | | 🔒 **Reproducibilidad garantizada** | Genera `uv.lock` (equivalente a `poetry.lock` o `pip-tools`) para que cada ejecución sea idéntica, en cualquier máquina. | 🛠️ Ejemplos reales (copia, pega y funciona) ### 🔹 1. Ejecutar un script con dependencias inline Crea un archivo `app.py` y pega esto: ```python # /// script # requires-python = ">=3.11,<3.13" # dependencies = ["requests", "rich"] # /// import requests from rich.console import Console r = requests.get("https://api.github.com") Console().print(f"[bold green]✅ GitHub respondió: {r.status_code}[/]") ``` Solo ejecuta: ```bash uv run app.py ``` `uv` leerá los comentarios, provisionará Python 3.12 si no lo tienes, instalará `requests` y `rich`, y ejecutará. **Sin tocar `pip`, sin crear carpetas, sin configurar nada.** ### 🔹 2. Inicializar un proyecto profesional ```bash uv init mi_api cd mi_api uv add fastapi uvicorn httpx uv run src/main.py ``` En 3 comandos tienes: - `pyproject.toml` bien estructurado - `.python-version` con la versión recomendada - Un entorno virtual sincronizado - Un `uv.lock` para reproducibilidad total ### 🔹 3. Compartir una herramienta CLI sin complicaciones Si distribuyes un script, añade los comentarios PEP 723 y dile a tus usuarios: > "Solo necesitas tener `uv` instalado. Luego escribe `uv run herramienta.py` y listo." No más guías de 10 pasos. No más "en mi máquina funciona". 📥 ¿Cómo instalarlo? (30 segundos) `uv` es un único binario autocontenido. No requiere Python para instalarse. **Linux / macOS:** ```bash curl -LsSf https://astral.sh/uv/install.sh | sh ``` **Windows (PowerShell):** ```powershell irm https://astral.sh/uv/install.ps1 | iex ``` > 💡 *Nota: Se instala en `~/.local/bin` (Unix) o `%USERPROFILE%\.cargo\bin` (Windows). Asegúrate de que esa ruta esté en tu `PATH`.* ## 🧠 Lo que `uv` NO es (y por qué eso es bueno) `uv` **no es un traductor mágico** que parchea código antiguo para que funcione en Python nuevo. Los cambios de ABI en extensiones C (como `numpy` o `pandas`) y las eliminaciones en la stdlib son reales y no se pueden "polyfilar" en runtime. Lo que sí hace `uv` es **evitar que tengas que pelear con ellos**. En lugar de intentar forzar compatibilidad, provisiona el entorno exacto que el código necesita, de forma automática, aislada y reproducible. Es la diferencia entre intentar arreglar un coche en marcha… y subirte a uno que ya está listo para conducir. 🎯 Conclusión: Python por fin vuelve a ser accesible Durante años, la fragmentación de versiones y la gestión de entornos han sido el peaje oculto que pagamos por usar Python. `uv` elimina ese peaje. Ya no tienes que ser experto en `venv`, `pyenv` o `pip` para ejecutar un script. Ya no tienes que explicar a tu equipo cómo configurar un proyecto. Ya no tienes que sufrir en distros rolling como Arch o CachyOS por culpa de un `requires-python` pinneado. `uv` hace el trabajo sucio. Tú solo escribes código, compartes ideas y ejecutas. Pruébalo hoy. Y cuando lo hagas, ya no mirarás a `pip install` con nostalgia… sino con alivio. --- 💬 **¿Ya probaste `uv`? ¿Qué te pareció? ¿Tienes ese script que por fin dejaste de pelear por las versiones? Déjame un comentario o comparte esta entrada con ese colega que todavía sufre con `python -m venv`. ¡Nos leemos!** 🐍✨

Comentarios

Entradas populares de este blog

Universitat de València: Configurando servicios informáticos con chuleta

Tras un retraso considerable, cosas de duendes,  ya estoy matriculado para el doctorado. He aquí mi chuleta de configuración de servicios de la UV para ayudar a hacerlo mas rápido a los que vengan detrás. CORREO: GMAIL , POSTAL.UV.ES Wi Fi: EDUROAM CAT VPN: OPENVPN CONNECT  Android IOS   GNU/Linux MS Windows  7+  (botón derecho guardar enlace como) Android método 2 PUBLICACIONES: SCIENCE DIRECT   CORREO: Para empezar el acceso al correo mediante  https://correo.uv.es/    me da errores,mando un correo desde una cuenta de gmail que abrí para el doctorado, saludo y recibo una muy útil información, entre otras la de la otro acceso al correo vía web  https://sogo.uv.es  que probé también con poco éxito al principio, luego, por misterios de la informática ha ido bien. USAR GMAIL para el correo UV.ES: Como el correo no me funciona bien al principìo lo he configuré en gmail : En configuración (en el menú de la...

CI(IQ): Entendiendo escalas, y comparativas entre países, tablas, y gráfico

CI(IQ): Entendiendo escalas, y comparativas entre países, tablas, y gráfico CI (IQ): Entendiendo las Escalas y las diferencias entre países. Un recorrido por escalas, clasificaciones y comparativas internacionales, con visualizaciones estáticas y análisis por tramos poblacionales. Contenido Ensayos y notas Campanas de Gauss Tabla resumen (cuartiles y deciles) Tabla por tramos (Top 2% separado) Análisis de Capacidades por Tramos Poblacionales Comparación de escalas Ranking por países Referencias académicas • Fuentes web Ensayos y notas Diferencias de Género en el CI Investigaciones recientes han analizado las diferencias en el CI entre hombres y mujeres. Un estudio publicado en 2019 por Richard Lynn y Satoshi Kanazawa analizó datos de múltiples países y encontró que los hombres tienden a tener una puntuación media de CI lige...