Pyenv: instale varias versiones de Python para un proyecto específico


Administrar múltiples versiones de Python en un sistema Linux no es una tarea fácil, especialmente para los principiantes. A veces, incluso empeora cuando desea desarrollar y ejecutar varios proyectos con diferentes versiones de Python en el mismo servidor. Sin embargo, este no debería ser el caso si emplea pyenv.

Pyenv es una herramienta simple, poderosa y multiplataforma para administrar múltiples versiones de Python en sistemas Linux, que solía ser.

  • Cambiar la versión global de Python por usuario.
  • configurar la versión local de Python por proyecto.
  • Gestión de entornos virtuales creados por anaconda o virtualenv.
  • Anular la versión de Python con una variable de entorno.
  • Búsqueda de comandos de varias versiones de Python y más.

Por lo general, se usa una única versión predeterminada de Python para ejecutar todas sus aplicaciones, a menos que especifique explícitamente la versión que desea usar dentro de la aplicación. Pero pyenv implementa un concepto simple de usar shims (ejecutables livianos) para pasar su comando a la versión correcta de Python que desea usar, cuando tiene varias versiones instaladas.

Estas calzas son insertadas por pyenv en directorios delante de su PATH. Entonces, cuando ejecuta un comando de Python, es interceptado por el shim apropiado y pasado a pyenv, que luego establece la versión de Python que ha sido especificada por su aplicación, y pasa sus comandos a la instalación de Python que le corresponde. Esta es una descripción general de cómo opera pyenv.

En este artículo, mostraremos cómo instalar la última versión de pyenv en Linux. También demostraremos los primeros tres casos de usos enumerados anteriormente.

Cómo instalar Pyenv en Linux

1. Primero instale todos los paquetes necesarios para instalar diferentes versiones de Python de las fuentes usando el siguiente comando en su distribución de Linux respectiva.

------------ On Debian/Ubuntu/Linux Mint ------------ 
$ sudo apt install curl git-core gcc make zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libssl-dev

------------ On CentOS/RHEL ------------
# yum -y install epel-release
# yum install git gcc zlib-devel bzip2-devel readline-devel sqlite-devel openssl-devel

------------ On Fedora 22+ ------------
# yum install git gcc zlib-devel bzip2-devel readline-devel sqlite-devel openssl-devel

2. A continuación, tome el último árbol de fuentes de pyenv de su repositorio de Github e instálelo en la ruta $HOME/.pyenv usando el siguiente comando.

$ git clone https://github.com/pyenv/pyenv.git $HOME/.pyenv

3. Ahora necesita configurar la variable de entorno PYENV_ROOT para que apunte a la ruta donde instaló pyenv y exportarlo. Luego agregue $PYENV_ROOT/bin a su PATH para ejecutar la utilidad de línea de comandos pyenv como cualquier otro comando del sistema.

También necesita habilitar shims y autocompletar agregando el pyenv init a su shell. Haga todas estas cosas en su archivo de inicio $HOME/.bashrc bash, como se muestra.

$ vim $HOME/.bashrc 

Copie y pegue las siguientes líneas al final de este archivo.

## pyenv configs
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"

if command -v pyenv 1>/dev/null 2>&1; then
  eval "$(pyenv init -)"
fi

4. Una vez que haya realizado los cambios anteriores, puede obtener el archivo $HOME/.bashrc o reiniciar el shell como se muestra.

$ source $HOME/.bashrc
OR
$ exec "$SHELL"

Cómo instalar varias versiones de Python en Linux

5. En este punto, debería estar listo para comenzar a usar pyenv. Antes de instalar cualquier versión de Python, puede ver todas las versiones disponibles con este comando.

$ pyenv install -l

6. Ahora puede instalar múltiples versiones de Python a través de pyenv, por ejemplo.

$ pyenv install 3.6.4
$ pyenv install 3.6.5

7. Para enumerar todas las versiones de Python disponibles para pyenv, ejecute el siguiente comando. Esto solo mostrará las versiones instaladas a través de pyenv.

$ pyenv versions

8. Puede verificar la versión global de Python con el siguiente comando, en este momento, la versión predeterminada debe ser la establecida por el sistema, no pyenv.

$ pyenv global

Puede configurar la versión global de Python usando el comando pyenv.

$ pyenv global 3.6.5
$ pyenv global

9. Ahora puede configurar la versión local de Python por proyecto, por ejemplo, si tiene un proyecto ubicado en $HOME/python_projects/test, puede configurar la versión de Python usando el siguiente comando.

$ cd python_projects/test
$ pyenv local 3.6.5
$ pyenv version		#view local python version for a specific project 
OR
$ pyenv versions

10. Pyenv gestiona entornos virtuales a través del complemento pyenv-virtualenv que automatiza la gestión de entornos virtualenvs y conda para Python en Linux y otros sistemas similares a UNIX.

Puede comenzar instalando este complemento usando los siguientes comandos.

$ git clone https://github.com/yyuu/pyenv-virtualenv.git   $HOME/.pyenv/plugins/pyenv-virtualenv
$ source $HOME/.bashrc

11. Ahora crearemos un entorno virtual de prueba llamado venv_project1 bajo un proyecto llamado project1 de la siguiente manera.

$ cd python_projects
$ mkdir project1
$ cd project1
$ pyenv virtualenv 3.6.5 venv_project1

12. Ahora, cuando enumere todas las versiones de Python, sus entornos virtuales, así como sus versiones locales de Python, también deben aparecer, como se muestra en la captura de pantalla.

$ pyenv versions

13. Para activar un virtualenv, por ejemplo venv_project1, escriba el siguiente comando.

$ pyenv activate venv_project1

Nota: Es posible que reciba el siguiente mensaje mientras usa la última versión del complemento pyenv-virtualenv por primera vez.

pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior.

Agregue la línea export PYENV_VIRTUALENV_DISABLE_PROMPT u003d 1 en su archivo $HOME/.bashrc, donde agregó otras configuraciones de pyenv, y obtenga el archivo para simular el comportamiento que se enfatiza.

14. Para desactivar el virtualenv activado, ejecute este comando.

$ pyenv deactivate

Para obtener más información, puede enumerar todos los comandos pyenv usando el siguiente comando.

$ pyenv commands

Para obtener más información, vaya al repositorio de pyenv Github: https://github.com/pyenv/pyenv

Usar pyenv es realmente así de simple. En esta guía, mostramos cómo instalarlo, y también demostramos algunos de sus casos de uso para administrar múltiples versiones de Python en un sistema Linux. Utilice el formulario de comentarios a continuación para hacer cualquier pregunta o compartir sus pensamientos sobre esta herramienta.