# Pyenv [Pyenv](https://github.com/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.