Underc0de

Programación Scripting => Python => Mensaje iniciado por: AnakinSolo23 en Abril 25, 2022, 11:46:32 AM

Título: Manejar entornos virtuales (venv) de Python con pyenv
Publicado por: AnakinSolo23 en Abril 25, 2022, 11:46:32 AM
Este es un centro para los devs que trabajan con alguna distro linux o mac.

Cuando empecé a desarrollar con Python me pasó que tuve que rabiar mucho con las versiones. En la mayoría de las distros de Linux (creo) viene por defecto python instalado, pero esa versión no era la que necesitaba para el proyecto que me habían asignado y tuve que batallar mucho para instalar otra versión y batallar un poco mas para poder usarla en el proyecto (un poco por ser noob en Python y otro poco porque en mi trabajo -de aquel entonces- los devs no eran muy "linux friendly"  ;D ), por lo que si hubiera conocido esta herramienta en ese momento, hubiera sido un poco distinto todo y no hubiera tenido que terminar pasando a Windows (solo para ese trabajo) como el resto del rebaño jaja..

La solución: pyenv
repo: https://github.com/pyenv/pyenv (https://github.com/pyenv/pyenv)
Instalar pyenv es relativamente sencillo, basta con ejecutar unos comandos en la terminal (cabe aclarar, solo está disponible para Linux y Mac al momento de escribir este post, y esta guía está simplificada para LinuxMint y Ubuntu -con bash-, la documentación completa en el link del repo)

Pre-requisitos:

$ 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

En LinuxMint 20.3 este paso me lo he salteado y no he tenido problemas.

Instalación
Abrir una terminal y ejecutar:

1. Clonar el repo
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv


2. Configurar el shell para Pyenv


$ sed -Ei -e '/^([^#]|$)/ {a \
export PYENV_ROOT="$HOME/.pyenv"
a \
export PATH="$PYENV_ROOT/bin:$PATH"
a \
' -e ':a' -e '$!{n;ba};}' ~/.profile

$ echo 'eval "$(pyenv init --path)"' >>~/.profile

$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc


3. Cerrar sesión y relogear (o reiniciar la PC directamente)
Listo, con esto ya tenemos instalado Pyenv, y lo podemos comprobar ejecutando lo siguiente en una terminal:
pyenv -v #-> pyenv 2.1.0-24-ga0cc289d

4. Opcional pero recomendado, plugin virtualenv
repo: https://github.com/pyenv/pyenv-virtualenv (https://github.com/pyenv/pyenv-virtualenv)
4.1. Clonar repo
$ git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
4.2. Habilitar auto-activacion de virtualenvs
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
4.3. Reiniciar la shell
$ exec "$SHELL"


Uso
Algunos comando básicos para usar desde la consola:
$ pyenv install -l

$ pyenv install 3.10.0

$ pyenv global 3.10.0

$ pyenv local 3.10.0
Esto crea un archivo .python-version
recomendación 1, si estas trabajando en un proyecto, agregar este archivo al .gitignore
recomendación 2, en lo posible settear como local un virtualenv


# En general
$ pyenv virtualenv <python_version> <venv_name>
# Ejemplo
$ pyenv virtualenv 3.10.1 my_project

Creo que con estos comandos estas listo para trabajar más cómodo con Python desde Linux o Mac, recuerda que siempre es conveniente que cada proyecto tenga su propio virtualenv y que allí se instalen sus dependencias.
Título: Re: Manejar entornos virtuales (venv) de Python con pyenv
Publicado por: pyfix en Mayo 05, 2022, 10:45:40 AM
Muy buen tutorial, hace un tiempo me daba en la cabeza con el tema de entornos virtuales, asi que empece a trabajar con anaconda y sus entornos virtuales que resultan mas sencillos.
salu2