Manejar entornos virtuales (venv) de Python con pyenv

Iniciado por AnakinSolo23, Abril 25, 2022, 11:46:32 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

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: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
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:
Código: php

$ 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
Código: php
 $ git clone https://github.com/pyenv/pyenv.git ~/.pyenv



2. Configurar el shell para Pyenv

Código: php

$ 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:
Código: php
pyenv -v #-> pyenv 2.1.0-24-ga0cc289d


4. Opcional pero recomendado, plugin virtualenv
repo: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
4.1. Clonar repo
Código: php
$ git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv

4.2. Habilitar auto-activacion de virtualenvs
Código: php
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc

4.3. Reiniciar la shell
Código: php
$ exec "$SHELL"



Uso
Algunos comando básicos para usar desde la consola:

  • Listar versiones disponibles para instalar
Código: php
$ pyenv install -l


  • Instalar una version
Código: php
$ pyenv install 3.10.0


  • Settear una version como global
Código: php
$ pyenv global 3.10.0


  • Settear una version como local (a la carpeta actual)
Código: php
$ 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

  • Crear un virtual env
Código: php

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

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