Ultra Violent Python


Este artículo fue traducido al español usando IA.
0
Este artículo fue traducido al español usando IA.

Imagina que, en una realidad alternativa, tuvieras una forma fácil de crear y gestionar tus proyectos Python. Sin el caos de generar un montón de archivos de configuración, entornos virtuales locos y cada rato tener que instalar algo con pip y –break-system-packages. Solo detente y conoce Ultra Violent Python!


¡La violencia nunca es la respuesta, es una pregunta, y la respuesta siempre será SÍ!

Si alguna vez te estresaste con pip, virtualenv, pyenv, pip-tools, twine, poetry y demás, respira hondo: Ultra Violent Python (ahora llamado uv) llegó para simplificarte la vida. Escrito en Rust, uv es un gestor de paquetes y proyectos para Python que promete ser más rápido que la ardilla de la película “Os sem floresta” después de tomarse una bebida energética.

¡Infelicidad total!


¿Pero por qué Ultra Violent?


“Ultra Violent Python” no es porque las serpientes sean agresivas, sino porque es exactamente lo que yo quería hacerle a mi ordenador antes de conocer a uv. Romperlo todo. Con gusto. Y tener una máquina del tiempo para hacerlo infinitamente.

Con uv, puedes:

  • Instalar y gestionar múltiples versiones de Python;
  • Crear y gestionar entornos virtuales automáticamente;
  • Manejar las dependencias de proyectos de forma eficiente;
  • Reproducir entornos de trabajo con facilidad;
  • Construir y publicar paquetes Python.

En resumen, uv es el Severino que le faltaba a Python.


Antes y después del uv

ANTES DO UV:
> pip install isso
> virtualenv aquilo
> source ativa_env
> esqueci a versão do Python
> deu ruim

DEPOIS DO UV:
> uv init meu_projeto
> uv add requests
> uv run
🧘🏻‍♀️ paz interior

Está bien. ¿Pero cómo se instala y usa uv?

En teoría, la forma ninja de instalar la versión más reciente:

En MacOS y Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

En Windows, vía powershell:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Si prefieres, puedes instalar uv usando pipx:

pipx install uv

O, si te sientes atrevido:

pip install uv

Pero cuidado: instalar directamente con pip puede desordenar tu entorno global. Usa con la debida moderación. Mentira, añade ya un –break-system-packages junto con el comando y GG.


¿Te caché mintiendo? ¡Revisa si hay actualizaciones!

Mentí arriba sobre instalar la última versión. Sí, a veces hago eso en mi sitio.

Mentira. Solo digo verdades. Instalarás la última versión, pero siempre es bueno ejecutar una buena y vieja actualización de vez en cuando.

Haz así:

uv self update

Si lo instalaste vía pipx:

pipx upgrade uv

¿Lo instalé y ahora qué?

Ahora puedes empezar a usar uv para gestionar tus proyectos Python. Para crear un proyecto nuevo, navega hasta el directorio donde quieras crear el proyecto y ejecuta:

uv init cobra_vilao

Esto crea la estructura básica del proyecto, incluyendo:

  • Un entorno virtual .venv;
  • Un archivo pyproject.toml con las configuraciones del proyecto;
  • Un README.md vacío;
  • Un archivo main.py con un simple “Hello World”.

Para ejecutar el script principal:

uv run main.py

En la primera ejecución, uv crea el entorno virtual y ejecuta el script. Así de simple.


¿Y el tema de las dependencias?

Tranquilo, joven Padawan, las dependencias ahora se gestionarán a nivel de proyecto, ya no será necesario ejecutar quinientos mil comandos de entornos virtuales o instalar directamente en el SO con el martillazo –break-system-packages.

Para añadir una dependencia:

uv add requests

Para actualizar:

uv pip install --upgrade requests

Para eliminar:

uv remove requests

Para dependencias de desarrollo:

uv add --dev pytest

Para asegurar que todos tengan el mismo entorno:

uv lock
uv sync

Construir y publicar paquetes

El comando uv build sirve para empaquetar tu proyecto Python — es decir, prepara todo para distribuir el proyecto como un paquete instalable (por ejemplo, vía PyPI). Funciona como un constructor (builder) que sigue el estándar PEP 517 - link: https://go.beckerig.com/pep

En la práctica, lo que hace es:

  • Lee tu pyproject.toml;
  • Genera los archivos .tar.gz (source distribution) y .whl (wheel);
  • Coloca todo ordenado en la carpeta dist/.

Ejemplo de estructura de proyecto:

cobra_vilao/
├── cobra_vilao/
│   ├── __init__.py
│   └── core.py
├── tests/
│   └── test_core.py
├── README.md
├── LICENSE
├── pyproject.toml
├── uv.lock
└── .venv/

Y un pyproject.toml básico:

[project]
name = "cobra_vilao"
version = "0.1.0"
description = "Cobras nervosas que quebram computadores com pip"
authors = [{ name="Alvin", email="[email protected]" }]
dependencies = ["requests"]

[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"

Después del build:

uv build

Tendrás una carpeta dist/ así:

cobra_vilao/
├── dist/
│   ├── cobra_vilao-0.1.0.tar.gz
│   └── cobra_vilao-0.1.0-py3-none-any.whl

¿uv es rápido?

Sí, tan rápido que parece que no hizo nada. Incluso haces un ls pensando que se bugueó. Spoiler: no se bugueó. Es simplemente rápido, de verdad (gracias, Rust!).


Tranquilizando y concluyendo

uv es una herramienta poderosa que simplifica la gestión de proyectos Python. Con ella, puedes, muy tranquilo:

  • Instalar y gestionar múltiples versiones de Python;
  • Crear y gestionar entornos virtuales automáticamente;
  • Manejar dependencias de forma eficiente;
  • Construir y publicar paquetes con facilidad.

¡Felicidad y paz!

Si estás cansado de lidiar con múltiples herramientas para gestionar tus proyectos Python, uv es la solución todo-en-uno que buscabas.

Y si aun así prefieres poetry (https://go.beckerig.com/poetry) , está bien… cada uno escoge su propio sufrimiento.

Más información: