馃悕 Setup Python con multiples versiones

馃惂 Linux
馃悕 Python
馃搮 2022-06-25

He visto 煤ltimamente lo complicado que se hace trabajar adecuadamente con multiples repositorios o diferentes versiones de Python usando pipenv.

Por eso he creado esta gu铆a de Python usando pyenv y pipenv, los cuales sirven para tener un mayor control tanto de la versi贸n c贸mo de las dependencias evitando errores, en este caso Ubuntu 22.04 con zsh.

驴C贸mo funciona?

Toda la gesti贸n de versiones de Python es gestionada usando pyenv, mientras que pip el gestor de dependencias para el entorno global de la versi贸n de Python. Asegur谩ndonos siempre primero de mirar la versi贸n python -V, vamos a instalar y pipenv que ser铆a un gestor de entornos con dependencias, sirve para instalar las cosas en el entorno en vez del entorno global y que las dependencias no se choquen.

En la documentaci贸n de los repositorios hay m谩s informaci贸n para otras versiones.

Pyenv

Lo primero a instalar es pyenv, idea usando el siguiente comando

git clone https://github.com/pyenv/pyenv.git ~/.pyenv

Una vez clonado lo siguiente es a帽adir el comando a zsh

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc

Actualizamos el fichero ~/.zshrc

source ~/.zshrc

Ahora claro ya lo tenemos, si el proyecto nos requiere python 3.7, por ejemplo, vamos a instalarlo, pero antes tenemos que instalar las dependencias de Python.

sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
pyenv install 3.7.15

Ahora ya podemos mirar si ha cambiado la versi贸n, si anteriormente no ten铆as python pone esta versi贸n como global, pero si ya hab铆a uno no la cambia.

python3 --version
Python 3.7.15

Perfecto ya tenemos la versi贸n que necesitamos, en caso de querer cambiarla seg煤n el 谩mbito y que no sea global, dejo el link a la documentaci贸n.

馃毃 Cuidado con cambiar la version global, otros programas del sistema pueden estar utiliz谩ndola.

Pipenv

Si acabas de instanciar la versi贸n hay que instalar pip y pipenv para poder usarlo.

python -m pip install -U pip
pip install pipenv

Finalmente dentro de la proyecto desde la terminal a la misma altura que el Pipfile(fichero que contiene las dependencias) instalamos sus dependencias y se crear谩 un entorno con el nombre del proyecto al ejecutar...

pipenv install --dev

Nota si ya tenias un entorno de pipenv creado anteriormente, recomiendo borrarlo y volver a instalar.

Gracias por llegar hasta aqu铆, espero que todo vaya bien y a darle Python