Pyenv: instal·leu diverses versions de Python per a un projecte específic


Gestionar diverses versions de Python en un sistema Linux no és una tasca fàcil, especialment per als principiants. De vegades, fins i tot empitjora quan voleu desenvolupar i executar diversos projectes amb diferents versions de Python al mateix servidor. Tanmateix, aquest no hauria de ser el cas si utilitzeu pyenv.

Pyenv és una eina senzilla, potent i multiplataforma per gestionar diverses versions de Python en sistemes Linux, que s'utilitzaven.

  • Canviar la versió global de Python per usuari.
  • Configuració de la versió local de Python per projecte.
  • Gestió d'entorns virtuals creats per anaconda o virtualenv.
  • Anul·lació de la versió de Python amb una variable d'entorn.
  • Cercant ordres de diverses versions de Python i més.

Normalment, s'utilitza una única versió predeterminada de Python per executar totes les vostres aplicacions, tret que especifiqueu explícitament la versió que voleu utilitzar a l'aplicació. Però pyenv implementa un concepte senzill d'utilitzar shims (executables lleugers) per passar la vostra comanda a la versió correcta de Python que voleu utilitzar, quan teniu instal·lades diverses versions.

Aquests shims s'insereixen per pyenv en un directori davant del vostre PATH. Així, quan executeu una ordre de Python, és interceptada pel shim adequat i la passa a pyenv, que estableix la versió de Python que ha especificat la vostra aplicació i passa les vostres ordres a la instal·lació legítima de Python. Aquesta és una visió general de com funciona pyenv.

En aquest article, mostrarem com instal·lar la darrera versió de pyenv a Linux. També demostrarem els tres primers casos d'ús enumerats anteriorment.

Com instal·lar Pyenv a Linux

1. Primer instal·leu tots els paquets necessaris per instal·lar diferents versions de Python des de fonts utilitzant l'ordre següent a la vostra distribució 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ó, agafeu l'últim arbre d'origen pyenv del seu dipòsit de Github i instal·leu-lo a la ruta $HOME/.pyenv utilitzant l'ordre següent.

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

3. Ara heu de configurar la variable d'entorn PYENV_ROOT perquè apunti al camí on heu instal·lat pyenv i exporteu-lo. A continuació, afegiu $PYENV_ROOT/bin al vostre PATH per executar la utilitat de línia d'ordres pyenv com qualsevol altra ordre del sistema.

També heu d'habilitar els shims i l'autocompleció afegint el pyenv init al vostre shell. Feu totes aquestes coses al vostre fitxer d'inici de $HOME/.bashrc bash, tal com es mostra.

$ vim $HOME/.bashrc 

Copieu i enganxeu les línies següents al final d'aquest fitxer.

## 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. Un cop hàgiu fet els canvis anteriors, podeu obtenir el fitxer $HOME/.bashrc o reiniciar l'intèrpret d'ordres tal com es mostra.

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

Com instal·lar diverses versions de Python a Linux

5. En aquest punt, hauríeu d'estar preparat per començar a utilitzar pyenv. Abans d'instal·lar qualsevol versió de Python, podeu veure totes les versions disponibles amb aquesta ordre.

$ pyenv install -l

6. Ara podeu instal·lar diverses versions de Python mitjançant pyenv, per exemple.

$ pyenv install 3.6.4
$ pyenv install 3.6.5

7. Per llistar totes les versions de Python disponibles per a pyenv, executeu l'ordre següent. Això només mostrarà les versions instal·lades mitjançant el mateix pyenv.

$ pyenv versions

8. Podeu comprovar la versió global de Python amb l'ordre següent, en aquest moment, la versió predeterminada hauria de ser la que estableixi el sistema, no pyenv.

$ pyenv global

Podeu configurar la versió global de Python mitjançant l'ordre pyenv.

$ pyenv global 3.6.5
$ pyenv global

9. Ara podeu configurar la versió local de Python per projecte, per exemple, si teniu un projecte situat a $HOME/python_projects/test, podeu configurar-ne la versió de Python utilitzant la següent comanda.

$ 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 entorns virtuals mitjançant el connector pyenv-virtualenv que automatitza la gestió dels entorns virtualenvs i conda per a Python a Linux i altres sistemes semblants a UNIX.

Podeu començar instal·lant aquest connector mitjançant les ordres següents.

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

11. Ara crearem un entorn virtual de prova anomenat venv_project1 sota un projecte anomenat project1 de la següent manera.

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

12. Ara, quan enumereu totes les versions de Python, els vostres entorns virtuals i les seves versions locals de Python també s'haurien d'enumerar, tal com es mostra a la captura de pantalla.

$ pyenv versions

13. Per activar un virtualenv, per exemple venv_project1, escriviu l'ordre següent.

$ pyenv activate venv_project1

Nota: Podeu rebre el missatge següent mentre feu servir la darrera versió del connector pyenv-virtualenv per primera vegada.

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

Afegiu la línia export PYENV_VIRTUALENV_DISABLE_PROMPT=1 al vostre fitxer $HOME/.bashrc, on heu afegit altres configuracions de pyenv, i obteniu el fitxer per simular el comportament que s'emfatitza.

14. Per desactivar el virtualenv activat, executeu aquesta ordre.

$ pyenv deactivate

Per obtenir més informació, podeu llistar totes les ordres pyenv utilitzant l'ordre següent.

$ pyenv commands

Per obtenir més informació, aneu al repositori pyenv Github: https://github.com/pyenv/pyenv

L'ús de pyenv és realment tan senzill. En aquesta guia, vam mostrar com instal·lar-lo, així com alguns dels seus casos d'ús per gestionar diverses versions de Python en un sistema Linux. Utilitzeu el formulari de comentaris següent per fer qualsevol pregunta o compartir els vostres pensaments sobre aquesta eina.