Python » Python Avanzado » Cómo instalar diferentes versiones de Python en tu computadora con pyenv

Cómo instalar diferentes versiones de Python en tu computadora con pyenv

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:

  1. En primer lugar, descargar este fichero zip con el código fuente de pyenv-win.
  2. 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
  1. 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.
  2. Ahora tenemos que establecer las variables de entorno PYENV y PYENV_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")
  1. Para seguir con la instalación, añadimos la carpeta bin al PATH, para poder ejecutar pyenv 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")
  1. Después de este último paso ya podemos cerrar la PowerShell.
  2. 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.
Ejecutar Windows PowerShell como administrador desde el menú de inicio
Ejecutar PowerShell como administrador
  1. Ahora ejecuta el siguiente comando y presiona O para indicar Sí a todo.
$ Set-ExecutionPolicy unrestricted
Permitir ejecución de scripts en PowerShell
Permitir la ejecución de scripts en PowerShell

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.

Foto del autor

Albert Brugués

Soy doctor en informática médica y un apasionado de la tecnología y las nuevas oportunidades que brinda. Más en particular me encanta la inteligencia artificial y el desarrollo web. En este blog pretendo compartir los conocimientos de Python que he ido adquiriendo a lo largo de los años.

4 comentarios en «Cómo instalar diferentes versiones de Python en tu computadora con pyenv»

    • 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!

      Responder
  1. 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

    Responder
    • 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.

      Responder

Deja un comentario