Entornos virtuales en Python con venv

Publicado por Andrea Navarro en

En este artículo veremos cómo crear entornos virtuales en Python utilizando el módulo venv. También veremos cómo instalar librerías dentro de un entorno virtual para crear aplicaciones auto-contenidas.

Entorno virtual

Un entorno virtual es un directorio que contiene los archivos de ejecución de Python y una copia de la librería de manejo de paquetes pip. Este directorio permite tener un entorno aislado de Python en el cual se puede desarrollar una aplicación cuyas dependencias se encuentren separadas de la instalación global de Python. La creación y ejecución de una aplicación dentro de un entorno virtual es una de las técnicas más comunes debido a sus ventajas.

El entorno virtual permite que la aplicación se encuentre auto-contenida ya que contiene todas las librerías necesarias para su funcionamiento dentro de su directorio. Si se quiere reproducir dicho entorno en otro sistema es posible utilizar un archivo de requerimientos donde se listen las librerías requeridas junto a su versión correspondiente.

Permite eliminar los conflictos de versión de librerías entre aplicaciones. Es posible que diferentes aplicaciones requieran versiones diferentes de una misma librería para poder funcionar con otras dependencias. Al crear entornos virtuales cada aplicación puede instalar la versión necesaria sin que esto genere conflictos en otras aplicaciones.

Los entornos virtuales permiten además la instalación de paquetes cuando no se tienen permisos de administrador. Una vez creado el entorno es posible instalar librerías con un manejador de paquetes como pip dentro el mismo sin requerir permisos especiales.

Venv

El módulo venv es parte de la librería estandar de Python . En el caso de que este módulo no se encuentre por defecto puede instalarse con el siguiente comando:

sudo apt install python3-venv

En este artículo detalla la creación y manejo de entornos virtuales con venv pero existen otras alternativas de terceros que cumplen con la misma función y contienen además otras características. Entre los más populares pueden nombrarse Virtualenv, Pyenv y Conda.

Crear entorno virtual

Para crear un entorno virtual se utiliza el siguiente comando:

python3 -m venv /path/entorno/virtual

Esto creará un directorio en el path seleccionado que tendrá el siguiente contenido:

ejemplo/
├── bin
├── include
├── lib
├── lib64 -> lib
└── pyvenv.cfg
  • bin\ : Contiene una copia o symlink a los binarios de Python, los scripts de activación del entorno y los de pip
  • include\ : Inicialmente es un directorio vacío. Se utiliza para incluir archivos de cabecera C para paquetes que dependan de extensiones en C
  • lib\ : contendrá una copia de la versión de Python y el subdirectoro site-packages donde se encuentran los paquetes instalados.
  • pyvenv.cfg : apuntará a la instlacción de Python desde donde se ejecutó el comando de creación del entorno virtual.

Activación del entorno virtual

Es posible activar el entorno ejecutando el script correspondiente dentro de la librería bin. Para realizarlo es necesario encontrarse dentro del directorio del entorno virtual.

source bin/activate

Si el entorno se ha activado correctamente se verá el nombre del entorno virtual entre paréntesis en el prompt.

(ejemplo) $

Mientras el entorno esté activado cada llamada realizada a Python o pip ejecutará las copias correspondientes a el entorno virtual en lugar de a las instalaciones globales.

Instalar paquetes en el entorno

Para instalar un paquete dentro del entorno virtual es necesario verificar que este siga activado. Luego se utiliza un manejador de paquetes como pip para instalar de la misma manera en la que se realiza normalmente.

(ejemplo) $ pip install <paquete>

Este comando instalará la librería request dentro del entorno ejemplo pero no lo instalará de manera global. Los archivos correspondientes a esta instalación se encontrarán dentro de lib/pythonX/site-packages.

En el siguiente se instalará dentro del entorno virtual una versión de la librería requests anterior a la última disponible. Esto se hará utilizando pip y con el entorno virtual activado.

(ejemplo) $ pip install requests==2.23

Para verificar que la librería está instalada en la versión correcta se ejecuta:

(ejemplo) $  pip show requests

Por terminal se mostrarán los datos de la librería requests instalada incluyendo la versión de la misma. También se puede observar que la ubicación se encuentra dentro de la librería lib del directorio del entorno ejemplo.

Desactivar entorno virtual

Para desactivar el entorno virtual que se encuentra activado se ejecuta el comando:

deactivate

Se puede comprobar que el entorno virtual no se encuentra activado ya que el nombre del entorno ya no aparecerá entre paréntesis en el prompt.

Una vez desactivado el entorno, al ejecutar nuevamente el comando para verificar la versión de la librería requests instalada:

pip show requests

En este caso puede verse que la librería está instalada globalmente con una versión más nueva y en el directorio correspondiente a los paquetes de Python del usuario.


En este artículo hemos visto como crear un entorno virtual utilizando el módulo venv de Python y cómo utilizarlo para la instalación aislada de paquetes y librerías. Espero que les sea de utilidad!


¿Preguntas? ¿Comentarios?

Si tenés dudas, o querés dejarnos tus comentarios y consultas, sumate al grupo de Telegram de la comunidad JuncoTIC!
¡Te esperamos!

Categorías: Programación

Andrea Navarro

- Ingeniera en Informática - Docente universitaria - Investigadora