Pyenv – te permite cambiar fácilmente entre múltiples versiones de Python
Rol de pyenv
- Se usa para instalar y cambiar entre múltiples versiones de Python, independientemente del Python del sistema.
- Flujos de trabajo comunes:
pyenvpara versiones del intérprete →venvopyenv-virtualenvpara entornos → Poetry/PDM/pip-tools para dependencias.- Igualar runtimes de producción (por ejemplo, un 3.x.y específico) o versiones antiguas/nuevas en la misma máquina.
- Algunas personas lo usan para construir intérpretes optimizados (LTO, flags nativos de CPU) o para mantener limpios los
site-packagesdel sistema.
Críticas y advertencias de pyenv
- La preocupación principal: normalmente compila CPython desde el código fuente, lo que:
- Requiere toolchains de compilación y bibliotecas; a menudo falla en macOS y Linux sin una configuración cuidadosa.
- Aumenta el tiempo de CI y el tamaño de las imágenes cuando se usa dentro de contenedores.
- Los shims añaden otra capa donde pueden ocultarse errores de PATH / resolución.
- Algunos ops/devs informan que han solucionado repetidamente problemas “misteriosos” de Python eliminando pyenv; lo ven como un wrapper que añade modos de fallo y que es más adecuado para expertos que para principiantes.
- Otros responden que compilar Python es trivial, han usado pyenv durante años sin problemas y valoran el control fino.
Alternativas para versiones y entornos de Python
- Sistema + venv: muchos defienden
python3.X -m venv .venvjunto con archivos de requisitos como suficiente para la mayoría del trabajo; simple e integrado.- Contraargumento:
venvsolo usa intérpretes ya instalados y a menudo crea symlinks hacia ellos, así que las actualizaciones del sistema operativo o del instalador pueden cambiar silenciosamente el runtime.
- Contraargumento:
- Gestores multilenguaje: asdf y mise gestionan Python junto con Node, Ruby, etc.; algunos prefieren mise por rendimiento y una CLI más agradable, reutilizando a menudo plugins de asdf/pyenv.
- Conda/mamba/pixi: siguen siendo populares donde se necesitan binarios que no son de Python (CUDA, stack geoespacial); pixi añade lockfiles y soporte de PyPI (a través de uv).
- Docker / Nix:
- Docker se usa ampliamente para evitar problemas con Python en el host, especialmente con imágenes base de NVIDIA para ML.
- Nix se destacó como una de las pocas opciones que puede reproducir realmente entornos completos (Python + bibliotecas del sistema) a lo largo del tiempo.
Meta sobre empaquetado de Python
- Muchos se quejan de la fragmentación: pip, venv, virtualenv, conda, poetry, PDM, pipenv, Rye, uv, pipx, etc.
- Hay consenso en que no existe una única “bala de plata”, especialmente para principiantes; las recomendaciones van desde “usa solo venv” hasta “usa solo Docker” o “usa Nix si puedes tolerar la complejidad”.