Si trabajas en múltiples proyectos de Python a la vez puede que te veas en la tesitura de tener que instalar diferentes versiones de Python en tu computadora. Ya sea porque uno de esos proyectos se inició en Python 2 y todavía no se ha migrado a la versión 3; o porque quieras ver si tu código puede ser portado sin errores a una nueva versión; o simplemente quieras probar las nuevas funcionalidades de la última versión de Python sin necesidad de estropear tu entorno de programación.
Para todas estas situaciones podemos utilizar la herramienta pyenv
, ya que no solo nos ayuda instalar multiples versiones de Python, sino que además nos permite cambiar fácilmente de versión en una misma computadora. En este artículo vamos a ver cómo instalar pyenv para distintos sistemas operativos y cómo sacarle provecho a esta herramienta.
Instalación de pyenv
Windows 10/11
¿En serio programas en Windows? En este caso deberías contemplar la posibilidad de cambiarte a otra plataforma. Es broma 😜. Aunque pyenv
no da soporte para Windows, existe un port del proyecto llamado pyenv-win
que es el que vamos a instalar. Para ello tenemos que seguir los siguientes pasos:
- En primer lugar, descargar este fichero zip con el código fuente de
pyenv-win
. - A continuación, crear un directorio
.pyenv
en tu carpeta de usuario. Esto se puede hacer tanto desde el Explorador de archivos como la PowerShell mediante el siguiente comando:
$ mkdir $HOME/.pyenv
- El tercer paso consiste en extraer tanto la carpeta
pyenv-win
como el fichero.version
del ZIP descargado anteriormente, en la carpeta que hemos creado anteriormente. - Ahora tenemos que establecer las variables de entorno
PYENV
yPYENV_HOME
para que apunten a la carpeta que acabamos de descomprimir. Para ello, desde la PowerShell ejecutamos los siguientes comandos:
$ [System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + "\.pyenv\pyenv-win\","User") $ [System.Environment]::SetEnvironmentVariable('PYENV_HOME',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
- Para seguir con la instalación, añadimos la carpeta
bin
alPATH
, para poder ejecutarpyenv
directamente desde PowerShell:
$ [System.Environment]::SetEnvironmentVariable('path', $env:USERPROFILE + "\.pyenv\pyenv-win\bin;" + $env:USERPROFILE + "\.pyenv\pyenv-win\shims;" + [System.Environment]::GetEnvironmentVariable('path', "User"),"User")
- Después de este último paso ya podemos cerrar la PowerShell.
- Para finalizar, si todavía no lo has hecho también tienes que permitir la ejecución de scripts desde PowerShell. Para ello abre PowerShell como administrador.
- Ahora ejecuta el siguiente comando y presiona O para indicar Sí a todo.
$ Set-ExecutionPolicy unrestricted
Con todos estos pasos completados, al abrir de nuevo PowerShell sin permisos de administración ya estás listo para utilizar pyenv
en Windows.
macOS
Antes de poder instalar pyenv
en tu Mac puede que tengas que instalar otras herramientas si no lo has hecho ya. En primer lugar, las herramientas de línea de comandos XCode que se instalan desde la aplicación de Terminal mediante el siguiente comando:
$ xcode-select --install
A continuación, también puedes instalar Homebrew ya que esta herramienta nos facilita la instalación de pyenv
. Para ello utiliza el siguiente comando:
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Además, hay que tener en cuenta que pyenv
en realidad compila Python desde el código fuente. Por ello, para evitar posibles errores en este proceso, puede que necesites instalar algunas librerías adicionales. Estas se pueden instalar con el mismo Homebrew:
$ brew install openssl readline sqlite3 xz zlib
Finalmente, puedes utilizar Homebrew para instalar pyenv
, con los mismos comandos que utilizarías para instalar cualquier otro paquete:
$ brew update $ brew install pyenv
Linux
Antes de empezar con la instalación, comentar que pyenv
compila Python desde el código fuente. Por tanto, para evitar posibles errores necesitas tener instaladas ciertas librerías. En el caso de Ubuntu tienes que ejecutar el siguiente comando para proceder con su instalación:
$ sudo apt update; sudo apt install build-essential libssl-dev zlib1g-dev libbz2-dev \ libreadline-dev libsqlite3-dev curl libncursesw5-dev xz-utils tk-dev libxml2-dev \ libxmlsec1-dev libffi-dev liblzma-dev
Si utilizas una distribución de Linux que no sea Ubuntu puede que estas librerías no sen exactamente las que necesitas. En ese caso, si la compilación de Python te da algún error, fíjate en las librerías que el Terminal te indica que faltan e instálalas.
Ahora sí, para instalar pyenv
en Linux puedes utilizar su autoinstalador. Para ello ejecuta el siguiente comando en el terminal:
$ curl https://pyenv.run | bash
Para terminar, añade pyenv
al PATH
y haz que se inicialice automáticamente con los siguientes dos comandos:
$ echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bashrc $ echo 'eval "$(pyenv init --path)"' >> ~/.bashrc
Utilización de pyenv
Una vez hemos finalizado la instalación de pyenv
, podemos comprobar que se haya instalado correctamente mediante el siguiente comando, el cual nos informa de la versión de pyenv
que hemos instalado:
$ pyenv --version
Pero quizás el comando más importante de pyenv
es el que nos permite instalar una nueva versión de Python, que es el siguiente:
$ pyenv install VERSION_PYTHON
Obviamente, en el comando anterior hay que sustituir VERSION_PYTHON
por la versión de Python en cuestión que queremos instalar. Y para saber las versiones disponibles para instalar lo podemos hacer con el comando:
$ pyenv install -l
Este comando imprime una larga lista de versiones de Python, entre las que se incluyen tanto la implementación oficial CPython, como otras implementaciones conocidas como pypy y anaconda.
Una vez hemos instalado alguna de las versiones disponibles, podemos listar todas las versiones de Python instaladas en nuestro entorno de trabajo mediante el comando:
$ pyenv versions
El comando anterior nos marca con un asterisco (*) la versión de Python que tenemos activa. También tenemos la posibilidad de ver la versión de Python activa con el siguiente comando:
$ pyenv version
Para cambiar la versión de Python tenemos dos opciones. Por un lado, podemos establecer la versión global de Python, es decir, la versión que se va a utilizar por defecto en todas las carpetas de nuestro sistema:
$ pyenv global VERSION_PYTHON
Por otro lado, también podemos establecer una versión de Python en una carpeta determinada del sistema. Esto lo conseguimos ejecutando el siguiente comando en la carpeta en cuestión:
$ pyenv local VERSION_PYTHON
Dicho comando crea fichero oculto en la misma carpeta denominado .python-version
que contiene el nombre de la versión indicada.
Finalmente, también también tenemos la posibilidad de desinstalar una versión específica de Python. Para ello podemos usar el siguiente comando:
$ pyenv uninstall VERSION_PYTHON
Actualización de pyenv
Con el paso del tiempo podemos actualizar pyenv
a una nueva versión y así aprovechar mejoras y nuevas funcionalidades que pueda tener la herramienta. El modo para actualizarlo va a depender de nuestro sistema operativo. En macOS, si has utilizado Homebrew, la actualización es como la de cualquier otro paquete:
$ brew upgrade pyenv
Por contra, si utilizas Windows 10/11 o alguna distribución de Linux, puedes actualizar fácilmente pyenv
con la siguiente instrucción:
$ pyenv update
Conclusiones
En este artículo hemos visto cómo instalar y utilizar pyenv
, una herramienta que nos permite instalar y cambiar fácilmente entre diferentes versiones de Python en una misma computadora. Espero que te haya sido de utilidad y le puedas sacar provecho. En caso que quieras profundizar más sobre esta herramienta, te recomiendo revisar la documentación oficial de pyenv (en inglés) donde se explica su funcionamiento con mucho más detalle.
Muchas gracias por tu guia, fue de bastante ayuda y sobretodo que esta bien explicado, todo funciono a la perfeccion.
De nada Sergio, me alegra saber que mi guía fue útil y que todo funcionó correctamente. ¡Gracias por tu comentario y muchos éxitos con tus proyectos en Python!
A mi me sale un error en Ubuntu 20.04: al ejecutar este comando:
$ sudo apt update; sudo apt install build-essential libssl-dev zlib1g-dev libbz2-dev \ libreadline-dev libsqlite3-dev curl libncursesw5-dev xz-utils tk-dev libxml2-dev \ libxmlsec1-dev libffi-dev liblzma-dev
Error.
E: Unable to locate package libreadline-dev
E: Unable to locate package libxmlsec1-dev
Hola Ravenz, fíjate que te da error en los paquetes que vienen después del backslash (\). En bash el backslash se utiliza para indicar un salto de línea, por tanto tienes dos opciones: i) eliminar los backslash y dejarlo todo el comando en una sola línea; o ii) asegurarte de que después del \ tienes un salto de línea y sólo un salto de línea ya que si hay un espacio seguirá dándote error.