User Tools

Site Tools


users:catalogue:programs:pyenv

Pyenv

Pyenv es una herramienta Python que permite al usuario disponer, en su espacio de usuario sin necesidad de permisos de sudo, de diversas versiones de Python, y también, crear diversos entornos virtuales con estas diversas versiones de Python. Un usuario puede disponer de, por ejemplo, la versión 2.7.1, 3.6.2 i 3.7 en su espacio de usuario y luego crearse diversos entornos virtuales (la hemos probado con virtualenv) que funcionen con ésta, aquella o aquella otra versión de python. Es una herramienta que da mucho control al usuario de con qué versión de python trabajar.

Instalación en el espacio de usuario.

Como usuario no root (por ejemplo admins_ceab), el usuario se descarga y hace correr el script de instalación:

admins_ceab@node216:~$ curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

Si el usuario quiere que se cargue automáticamente pyenv cada vez que inicia una sesión en un nodo (qlogin) ha de añadir las líneas siguientes a su .bashrc:

export PATH="/home/admins_ceab/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

Una vez añadidas estas líneas a su .bashrc puede salir y volver a entrar o bien ejecutar:

admins_ceab@node216:~$ source .bashrc 

Una vez hecho ésto ya puede ejecutar pyenv.

Cosas que se pueden hacer con pyenv:

1.- Puedo instalar mi versión favorita de python… (de hecho entiendo que el usuario podría instalar varias versiones, siempre en espacio de usuario:

admins_ceab@node216:~$ pyenv install 3.6.0
Downloading Python-3.6.0.tar.xz...
-> https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
Installing Python-3.6.0...
Installed Python-3.6.0 to /home/admins_ceab/.pyenv/versions/3.6.0

2.- Puedo crear un virtualenv con una versión determinada de python en cuestión:

admins_ceab@node216:~/.pyenv/bin$ pyenv virtualenv 3.6.0 general
Requirement already satisfied: setuptools in /home/admins_ceab/.pyenv/versions/3.6.0/envs/general/lib/python3.6/site-packages
Requirement already satisfied: pip in /home/admins_ceab/.pyenv/versions/3.6.0/envs/general/lib/python3.6/site-packages

3.- Hacer activo este virtualenv para mi usuario (ésto último no entiendo demasiado bien que quiere decir):

admins_ceab@node216:~/.pyenv/bin$ pyenv global general
(general) admins_ceab@node216:~/.pyenv/bin$ 

Para poder ejecutar el virtualenv creado con python 3.6.0, tengo que hacer:

admins_ceab@node216:~$ cd .pyenv/versions/general/bin/
admins_ceab@node216:~/.pyenv/versions/general/bin$ source activate
(general) admins_ceab@node216:~/.pyenv/versions/general/bin$ 

(los entornos virtuales virtualenv se almacenan en .pyenv/versions). Entonces si ejecuto python dentro del virtualenv…

(general) admins_ceab@node216:~/.pyenv/versions/general/bin$ python
Python 3.6.0 (default, Nov 22 2019, 13:54:00) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

Osea, que, efectivamente, funcionaría.

users/catalogue/programs/pyenv.txt · Last modified: 2019/11/27 14:40 by admins_ceab