Estas anotaciones, las entradas en este blog me ayudan a organizar ideas, reforzar algún aprendizaje y darle un sentido a todo ello. Tal vez muchos de los lectores de este blog no las encuentren útiles, entendibles o interesantes, pero la publicación de todo esto no se hace con la intención de promover un producto específico, una filosofía de desarrollo en particular, ni una forma específica de instalar o configurar un equipo, software, entorno o herramienta de desarrollo. Como se indica en muchas otras entradas o páginas de apuntes, son elaboradas para uso de quien las escribe (como referencia personal). Se comparten por si a alguien más le pudieran servir, pero nada más.
Recientemente mencioné la necesidad de adoptar uv como administrador de entornos virtuales. Curiosamente, ello me llevó a trabajar con venv, pero no sé si eso es lo mejor o lo correcto. Así que fue necesaria una mini investigación. Aquí anoto los resultados.

Debo anotar también que, en muchas ocasiones, después de que uno ha trabajado con algún otro producto y con él se ha encariñado, se ha adaptado, lo ha adoptado o se ha acostumbrado, pasar al uso de otro implica una curva de aprendizaje, pero pocas veces nos damos cuenta de que también hay un cambio de paradigma o de filosofía.
La filosofía detrás de conda es:

- Un entorno consiste de un kernel y dependencias, es decir un motor que permita ejecutar cosas (un intérprete o compilador), un conjunto de bibliotecas que uno usa para enfocarse en el problema a resolver y no en el detalle de las operaciones para ello.
- Uno crea el entorno seleccionando el kernel y su versión (como es en el caso de Python).
- La identidad del entorno creado se define mediante un identificador (nombre) que, al menos para el usuario que lo crea, es único (me refiero a la cuenta del usuario en el computador).
- conda se encarga de administrar el entorno.
Por su parte, uv:
- La resolución de dependencias se hace por proyecto, lo que define el entorno.
- Python y sus versiones son herramientas, no entornos.
- Los entornos son desechables, baratos y reproducibles.
- uv delega el aislamiento a los entornos virtuales definidos en PEP-405.
- uv se enfoca en el proyecto, no en el entorno que mantiene (valga la redundancia) a los entornos virtuales.

Así que, si observamos con cuidado, veremos que conda se mueve alrededor de «¿cuál es el entorno que (re)quieres?», mientras que para uv es más «¿qué es lo que este proyecto necesita?» De esto se desprenden varias cosas y vemos asimismo la importancia de entender la filosofía detrás del paquete, que nos lleva a hacer un mejor uso de éste y evitar buscar encuadrarlo en una idea de uso (detalles que dejo para una entrada posterior).
