Crear un entorno virtual en Python utilizando Pyenv

Photo by Chris Ried on Unsplash

Crear un entorno virtual en Python utilizando Pyenv

👋 Hola. Después de casi un año sin publicar en el blog quiero retomarlo nuevamente y compartir con ustedes principalmente temas de desarrollo web que es lo que realmente me apasiona.

Hoy les voy a compartir como crear un entorno virtual de Python utilizando Pyenv.

Que es Pyenv

Pyenv en es una herramienta que nos permite instalar diferentes versiones de Python y cambiar entre ellas según los requerimientos del proyecto con el cual necesitamos trabajar.

Por ejemplo, podríamos instalar la versión 3.6 para un proyecto determinado y de la misma forma instalar la versión 3.10 para otro proyecto.

A través de una serie de comandos muy sencillos que veremos a continuación podremos instalar y cambiar de versión según las necesidades de nuestro proyecto.

Instalar Pyenv (Ubuntu)

Instalamos una serie de requerimientos necesarios antes de instalar Pyenv.

$ 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

Descargamos y ejecutamos el script de instalación

$ curl https://pyenv.run | bash

Añadimos lo siguiente a nuestro .bashrc o .zshrc

# pyenv
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv virtualenv-init -)"

Reiniciamos nuestra shell

$ source ~/.zshrc

Por último validamos la instalación

$ pyenv --version 
pyenv 2.2.4

Instalar diferentes versiones de Python

Ahora que tenemos Pyenv instalado en nuestro sistema podemos comenzar a instalar las versiones de Python que necesitemos.

Para ver un listado de todas las versiones de Python disponibles ejecutamos:

$ pyenv install --list

Para filtrar las versiones desde la 3.6.0 hasta la última versión de 3.7 ejecutamos el siguiente comando:

$ pyenv install --list | grep " 3\.[67]" 
3.6.0
3.6-dev
3.6.1
3.6.2
3.6.3
3.6.4
...
...
3.7.10
3.7.11
3.7.12

Ahora que podemos ver las versiones de Python disponibles vamos a instalar la versión 3.6.0

$ pyenv install -v 3.6.0

Esperamos un poco dependiendo de la velocidad de la conexión y en pocos segundos deberíamos tener la versión 3.6.0 instalada.

Instalamos una segunda versión, por ejemplo 3.9.9

$ pyenv install -v 3.9.9

Si queremos ver las versiones de Python instaladas ejecutamos:

$ pyenv versions 
3.6.0
3.9.9

Especificar una versión de Python

Ya tenemos varias versiones de Python instaladas en nuestro sistemas, ahora debemos especificar con cual versión vamos a trabajar.

Podemos establecer una versión global para todo el sistema:

$ pyenv global 3.9.9

Si listamos las versiones disponibles podemos ver que las versión * 3.9.9 está especificada como la versión global para el sistema.

$ pyenv versions
3.6.0
* 3.9.9 (set by /home/roylan/.pyenv/version)

Para comprobarlo ejecutamos el interprete de Python

$ python
Python 3.9.9 (main, Mar  7 2022, 16:48:18) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.

Versiones locales

Pyenv es incluso mucho más flexible 👍 y nos permite especificar una versión local para un directorio en específico. Vamos a suponer que estamos creando un proyecto nuevo llamado ecomerce y necesitamos trabajar con la versión 3.9.9.

$ mkdir -p proyecto/ecomerce
$ cd proyecto/ecomerce
$ pyenv local 3.9.9

Este último comando establece la versión 3.9.9 como la predeterminada en este directorio y todos sus hijos. Si listamos el directorio con el comando ls -la podemos ver el archivo .python-version el cual contiene la versión de Python especificada como local.

$ pyenv versions
3.6.0
* 3.9.9 (set by /home/roylan/proyecto/ecomerce/.python-version)

Crear un entorno virtual con python

Ya que sabemos instalar y seleccionar una versión de Python para un proyecto en específico es hora de crear el entorno virtual.

Creamos un entorno virtual para nuestro futuro ecomerce

$ pyenv virtualenv 3.9.9 ecomerce

Aquí estamos creando un entorno virtual llamado ecomerce con la versión 3.9.9 de Python.

Necesitamos activar el entorno virtual para instalar todos los requerimientos del proyecto.

$ pyenv activate ecomerce
(ecomerce) $

Si queremos desactivar el entorno virtual es tan sencillo como:

$ pyenv deactivate

💪 Por último podemos especificar un entorno virtual como local. De esta forma cada ves que accedamos a la capeta ecomerce el entorno virtual se activará automáticamente y al salir se desactivará igualmente.

$ pyenv local ecomerce

Conclusiones

Como hemos podido ver, Pyenv es una herramienta muy potente y flexible que podemos utilizar para trabajar con diferentes versiones de Python y entornos virtuales en nuestros proyecto.

Pyenv tiene muchas opciones las cuales puedes ver con el comando pyenv --help. Aquí nos hemos centrado en los comando necesarios para trabajar con los entornos locales.

Espero que esta pequeña guía te sea de utilidad.

Did you find this article valuable?

Support Roylan Suarez Reyes by becoming a sponsor. Any amount is appreciated!