Cómo usar Pyenv: instalar, desinstalar, listar múltiples versiones de Python como local, global
En un post anterior, resumimos cómo instalar la última versión de Python en MacOS y Windows. En algunos casos, sin embargo, es posible que necesite utilizar varias versiones o diferentes distribuciones de Python en una sola máquina.
Por ejemplo, las versiones y paquetes centrados en FastAPI para el desarrollo de Web API, y la distribución y paquetes Anaconda para la ciencia de datos.
Gestionar manualmente estas diferentes versiones de Python puede ser un engorro. Tienes que recordar directorios y cambiar continuamente la configuración PATH. Sería bueno tener un programa que haga esto por ti.
1. Presentando Pyenv
Pyenv es un programa que gestiona múltiples versiones de Python por nosotros. Puedes seleccionar fácilmente la versión de Python que quieres usar, e incluso especificar diferentes versiones de Python para diferentes proyectos para que se ejecuten automáticamente. Incluso puedes probar un único comando con múltiples versiones de Python.
Echemos un vistazo a cómo instalar pyenv en Mac y Windows, y cómo utilizar pyenv para instalar múltiples versiones de Python.
2. Instalando pyenv en Mac
La forma más fácil de instalar pyenv en Mac es a través de homebrew. Inicia la instalación con el siguiente comando.
brew install pyenv
pyenv instala autoconf
, openssl
, pkg-config
y readline
juntos.
autoconf
es para la automatización a través de scripts de shell, openssl
para el cifrado SSL/TLS,
pkg-config
para comprobar la información del compilador y readline
para manipular la línea de comandos.
Una vez completada la instalación, se verifica con la orden verify version.
pyenv --version
Resultado de la ejecución:
2.1. Añadir shells adicionales
Dado que pyenv funciona a través de un shell, necesitas registrar tus propios shells. Puedes hacerlo introduciendo los siguientes comandos para cada shell.
2.1.1. Bash
Si estás usando el shell Bash, escribe el siguiente comando para añadir 3 líneas de código a tu archivo ~/.bashtc
.
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
Añade también tres líneas de código al archivo ~/.profile
.
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
echo 'eval "$(pyenv init -)"' >> ~/.profile
Si existe un fichero ~/.bash_profile
, añádelo aquí también. A continuación, ejecute el terminal de nuevo.
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
2.1.2. Zsh
Si estás utilizando el intérprete de comandos Zsh, escribe el siguiente comando para añadir tres líneas de código al archivo ~/.zshrc
y, a continuación, reinicia el terminal.
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
2.1.3. Fish
Si utiliza la shell Fish 3.2.0
o posterior, ejecute el siguiente comando.
set -Ux PYENV_ROOT $HOME/.pyenv
fish_add_path $PYENV_ROOT/bin
Si utiliza una versión anterior a 3.2.0
, ejecute el siguiente comando.
set -Ux PYENV_ROOT $HOME/.pyenv
set -U fish_user_paths $PYENV_ROOT/bin $fish_user_paths
Por último, independientemente de la versión, añada el siguiente comando al archivo ~/.config/fish/config.fish
.
echo 'pyenv init - | source' >> ~/.config/fish/config.fish
Ahora ejecuta de nuevo el terminal.
3. Instalando pyenv-win en Windows
Dado que Pyenv es un programa que funciona a través de shell scripts basados en el sistema operativo Unix, nunca ha estado disponible para Windows.
Sin embargo, recientemente se ha desarrollado una versión para Windows de Pyenv llamada pyenv-win
.
Esto permite a los usuarios de Windows aprovechar las ventajas de Pyenv.
Instalar pyenv-win
es un simple comando.
En primer lugar, abra Windows PowerShell (que se instala por defecto en Windows) como administrador.
También puede ejecutar la aplicación Terminal.
Ejecutar Windows PowerShell](/images/python/install/pyenv/2.webp)
Asegúrate de ver Windows PowerShell Administrator
en la barra de título, y luego escribe los siguientes comandos en secuencia.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"
Si no introduces el primer comando, obtendrás un error de permisos como este
Si introduce ambos, la instalación se completará normalmente, así
Ahora cerramos el programa terminal y lo reiniciamos. Luego escribamos el comando pyenv version check.
pyenv --version
Resultado de la ejecución:
La instalación se ha realizado correctamente.
A continuación, necesitamos registrar las rutas utilizadas por Pyenv en variables de entorno. Escribe los siguientes cuatro comandos uno tras otro.
[System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('PYENV_ROOT',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('PYENV_HOME',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('path', $env:USERPROFILE + "\.pyenv\pyenv-win\bin;" + $env:USERPROFILE + "\.pyenv\pyenv-win\shims;" + [System.Environment]::GetEnvironmentVariable('path', "User"),"User")
Vuelva a abrir el terminal y la configuración surtirá efecto.
4. Cómo usar pyenv en Mac, Windows
Usar pyenv es lo mismo independientemente de tu sistema operativo. Te guiaré a través de él en el Mac y sólo te mostraré capturas de pantalla de lo que hice en Windows. En Mac, usé el shell fFsh.
No se está ejecutando nada porque el comando por defecto para ejecutar python en el Mac es 'python3'. Ahora usaremos pyenv para instalar una nueva versión de Python.
4.1. Instalando Python con pyenv
En primer lugar, vamos a comprobar todas las versiones disponibles para la instalación escribiendo el siguiente comando.
pyenv install -l
Resultado de la ejecución:
Verás montones de distribuciones y versiones, desde Python2 hasta Jython, Graal, Anaconda y más. Para instalar una de ellas, tendrás que escribir el nombre de esa versión.
pyenv install [version_name]
Resultado de la ejecución:
Una vez completada la instalación, ejecuta el siguiente comando para ver todas las versiones de Python que tienes instaladas en tu máquina usando Pyenv.
pyenv versions
Resultado de la ejecución:
Arriba puedes ver la nueva versión instalada pypy3
en la lista.
A continuación se muestra cómo establecerla a la Python instalada.
4.2. Estableciendo la versión de Python con Pyenv
Vamos a establecer la versión para ejecutar nuestro Python recién instalado. Hay tres formas de hacerlo. Veámoslas de una en una.
4.2.1. Establecer sólo en el shell actual
Este método lo habilita sólo en el shell actual abierto, y la configuración se restablece cuando cierras la terminal. Ejecute el siguiente comando
pyenv shell [version_name]
El resultado de la ejecución:
El comando python
ha ejecutado esta versión. Si reinicias el terminal y escribes el comando, verás que se ha inicializado.
4.2.2. Establecer sólo en la carpeta actual
Si estableces una versión específica de Python en la carpeta actual, la versión que establezcas se ejecutará automáticamente cada vez que entres en esa carpeta. Entre en la carpeta deseada y escriba el siguiente comando.
pyenv local [version_name]
Para probar, he creado una nueva carpeta y trató de establecer la versión.
El resultado de la ejecución:
Puedes ver que cuando visitas la carpeta `test', se ejecuta el set python, y cuando sales de la carpeta padre, se vuelve a desestablecer.
4.2.3. Habilitar el ancho de máquina
Finalmente, puedes pedir que una versión específica se ejecute en cualquier ruta. Introduce el siguiente comando para configurarlo.
pyenv global [version_name]
Resultado de la ejecución:
Configurando 3.11.1
como global resultó en que esa versión de Python se ejecutara tanto en la carpeta actual como en la nueva carpeta cuando se comprobó.
La última cosa a tener en cuenta es la prioridad de cada versión de Python establecida. La número 1 es la prioridad más alta, seguida de la número 2, y luego la número 3. En otras palabras, el conjunto de versiones sólo para el shell actual ignorará la carpeta global, y el conjunto de versiones para la carpeta ignorará la global.
4.3. Otros comandos útiles
Además de instalar y establecer versiones, Pyenv proporciona un número de otros comandos, como borrar y comprobar rutas.
Puedes ver los comandos y sus descripciones tecleando pyenv
para familiarizarte con ellos.
Resultado de la ejecución:
5. Captura de pantalla usando Pyenv en Windows
Vamos a hacer lo mismo que hicimos en Sección 4 con explicaciones en Windows. Sólo mostraré capturas de pantalla, así que por favor refiérase a Sección 4 para las explicaciones.
