- Permite cambiar fácilmente entre varias versiones de Python
- Sigue la tradición de herramientas UNIX de propósito único: simple, discreta y que funciona bien
- Este proyecto se bifurcó de rbenv y ruby-build, y fue adaptado para Python
Qué hace pyenv
- Permite cambiar la versión global de Python por usuario.
- Ofrece soporte para versiones de Python por proyecto.
- Permite sobrescribir la versión de Python usando variables de entorno.
- Puede buscar comandos de varias versiones de Python al mismo tiempo. Es útil para probar entre versiones de Python usando tox.
Qué no hace pyenv...
- No depende de Python en sí. pyenv está hecho como un script de shell puro.
- No necesita cargarse en el shell. En su lugar, usa un enfoque de shim agregando un directorio a
PATH.
- No gestiona virtualenv. Claro, el usuario puede crear virtualenvs manualmente o automatizarlo usando pyenv-virtualenv.
Cómo funciona
- pyenv intercepta los comandos de Python usando ejecutables shim inyectados en
PATH, determina la versión de Python especificada por la aplicación y luego pasa el comando a esa instalación de Python.
Entender PATH
- Cuando ejecutas un comando como
python o pip, el sistema operativo busca un ejecutable con ese nombre en la lista de directorios de la variable de entorno PATH.
Entender los shims
- pyenv inserta un directorio de shims al inicio de
PATH. Mediante el proceso de rehashing, mantiene shims para todos los comandos de Python de todas las versiones de Python instaladas.
Entender la selección de versión de Python
- Cuando se ejecuta un shim, pyenv lee y usa la versión de Python desde las siguientes fuentes, en este orden:
- La variable de entorno
PYENV_VERSION (si está definida).
- El archivo
.python-version específico de la aplicación en el directorio actual (si existe).
- El primer archivo
.python-version encontrado al buscar en cada directorio padre hasta llegar a la raíz del sistema de archivos (si existe).
- El archivo global
$(pyenv root)/version.
Encontrar la ubicación de la instalación de Python proporcionada por pyenv
- Según la versión de Python que pyenv determine, pasa el comando a esa instalación de Python.
- Cada versión de Python se instala en su propio directorio dentro de
$(pyenv root)/versions.
Uso
Instalar versiones adicionales de Python
- Usa
pyenv install para instalar versiones adicionales de Python.
Resolución automática a la versión más reciente
- Todos los subcomandos de Pyenv, excepto
uninstall, resuelven automáticamente un prefijo completo a la versión más reciente.
Versiones de Python con soporte extendido
- Hay versiones de Python a las que se les aplican parches aportados por usuarios para agregar soporte en entornos específicos.
Cambiar entre versiones de Python
- Para usar una versión de Python instalada por Pyenv, ejecuta uno de los siguientes comandos:
pyenv shell
pyenv local
pyenv global
Eliminar versiones de Python
- Con el tiempo, las versiones de Python se acumulan en el directorio
$(pyenv root)/versions.
- Para eliminar una versión antigua de Python, usa
pyenv uninstall .
Otras tareas
- Para ver la lista de todos los subcomandos disponibles, ejecuta
pyenv commands.
Eliminar pyenv
- Es fácil desactivar temporalmente Pyenv o eliminarlo del sistema.
Plugins de Pyenv
- Puedes ampliar y personalizar la funcionalidad de Pyenv de una manera simple, flexible y mantenible usando plugins.
Configuración avanzada
- Hay variables de entorno que controlan el comportamiento de Pyenv.
Desarrollo
- El código fuente de Pyenv está alojado en GitHub.
- Las pruebas se ejecutan usando Bats.
Opinión de GN⁺
- pyenv es una herramienta muy útil para gestionar distintas versiones de Python. Es especialmente útil para desarrolladores que necesitan usar diferentes versiones de Python en varios proyectos.
- Como esta herramienta no depende de Python en sí y está compuesta por scripts de shell puros, puede instalarse y administrarse incluso en sistemas donde Python no está instalado.
- pyenv no gestiona virtualenv directamente, pero es conveniente porque permite automatizar su gestión mediante el plugin pyenv-virtualenv.
- Como la instalación y el uso son relativamente sencillos, incluso ingenieros de software principiantes que necesiten gestionar versiones de Python pueden adoptarlo fácilmente.
- Otra herramienta que ofrece funciones similares a pyenv es
conda, ampliamente usada especialmente en ciencia de datos y aprendizaje automático. Como conda ofrece tanto gestión de paquetes como de entornos, puede recomendarse a usuarios que necesiten esas funciones.
- Al adoptar pyenv, se debe tener cuidado si hay varias versiones de Python instaladas en el sistema para evitar conflictos de rutas. El beneficio de usar pyenv es la facilidad para gestionar versiones, pero una configuración incorrecta puede interferir con la ruta del Python predeterminado del sistema.
7 comentarios
Con
conda, tengan cuidado: en empresas de cierto tamañoes de pago.
Aunque la empresa sea pequeña, si el cliente principal es grande, se vuelve complicado entregarlo.
Conda en sí es gratuito bajo BSD, pero revisa bien las licencias del repositorio y de los paquetes.
Tengo
asdfconfigurado en el nivel superior: https://asdf-vm.com/Y por proyecto, a veces lo configuro con
local, y otras uso contenedores...Como han salido muchas formas nuevas de configurar + gestionar entornos, la verdad es que ya casi no lo uso... jajaja
Yo también lo uso exactamente así.
jajaja, personalmente siento que pyenv se ha quedado un poco anticuado.
Como siguen apareciendo cosas como rbenv, pyenv y nodenv, al final también terminó surgiendo algo llamado anyenv. jaja
https://github.com/anyenv/anyenv
Opiniones de Hacker News
Advertencia sobre el uso de pyenv
El sufrimiento de los programadores de Python
Herramientas para mantener estables los programas de Python
Introducción a la herramienta Mise
Ventajas de ASDF
Experiencia de uso con pyenv
python<version> -m venv /my/virtual/env.Stack personal para gestionar Python
venvpara crear un nuevo entorno virtual en cada proyecto.Gestión de dependencias de runtime con Mise
Flujo de trabajo en macOS
Siento que este es el punto más doloroso.