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