Python
Entorno de desarrollo
Pyenv - Múltiples versiones

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: Comprobando la versión de pyenv

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

error de seguridad en la instalación de pyenv

Si introduce ambos, la instalación se completará normalmente, así

instalación de pyenv completa

Ahora cerramos el programa terminal y lo reiniciamos. Luego escribamos el comando pyenv version check.

pyenv --version

Resultado de la ejecución: Comprobación de la versión de pyenv para Windows

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.

Error de ejecución de python en Mac

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: pyenv install -l list

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: python install pypy3

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:

pyenv versions results

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: pyenv shell resultado versiones resultado

El comando python ha ejecutado esta versión. Si reinicias el terminal y escribes el comando, verás que se ha inicializado.

comando python no encontrado

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: pyenv local

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: pyenv global --reverse

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: comandos pyenv

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.

windows pyenv install -l

windows pyenv install

pyenv install

pyenv shell y local

copyright for Python pyenv

© 2023 All rights reserved.