Entorno virtual en Python. Como y para que. Ubuntu, Linux Mint, etc

Ya sea porque estás desarrollando una aplicación en Python, o porque quieres hacer uso de ella, es posible que te encuentres en la situación de que utilice una versión de Python antigua. También puede suceder que esa aplicación utilice unas librerías que no son compatibles con las que tiene instalado por defecto tu sistema. Otra situación que podría darse, es que quieras utilizar dos versiones de la aplicación que utilizan diferentes versiones de librerías. ¿Como podrías hacer esto en tu equipo? La solución la encontramos en utilizar un entorno virtual en Python.

Crear un entorno virtual en Python. Portada.

Entorno virtual en Python

Un entorno virtual de Python no es mas que un ámbito de trabajo aislado del sistema principal o de otros ámbitos. Esto nos permite ejecutar una determinada aplicación, sin afectar al sistema o a otros procesos. Igualmente nos permite instalar determinadas librerías o versiones de las librerías, sin que afecte al resto.

Pero sobre todo, creo que lo mas interesante es que, nos facilita ejecutar en un mismo sistema diferentes versiones de una misma aplicación.

Por supuesto que siempre podemos instalar varias máquinas virtuales, y probar en cada una de ellas nuestra aplicación con distinta versión de Python y con distintas versiones de librería. Pero sin lugar a dudas, la opción que nos ofrece un entorno virtual en Python es mucho mas sencilla.

Instalar los elementos necesarios para crear un entorno virtual en Python

Antes de comenzar a crear un entorno virtual en Python, necesitamos una serie de librerías que son las que nos van a permitir poner todo esto en marcha.

Evidentmente, y como ya te lo habrás imaginado, tenemos dos opciones, en función de la versión de Python que queramos utilizar. Comenzaré por Python 3.X (ya es hora de que cambies a esa versión) y luego te comentaré como hacer lo mismo con *Python 2.X.

Un entorno virtual en Python 3.X

Antes de nada, vamos a instalar lo que necesitaremos para crear nuestro entorno virtual. Para ello, en un terminal ejecutaremos la siguiente orden,

sudo apt install python3-venv

venv en el módulo que nos permite crear un entorno virtual en Python 3, con sus propios directorios, y que opcionalmente puede estar aislado de los directorios del sistema. Cada entorno virtual en Python tiene su propio binario Python, así como el cojunto de paquetes necesarios.

Cuando un entorno virtual está actvo, todos los paquetes Python se instalan en ese entorno virtual, sin que sea necesario indicarlo de forma explícita. De esta manera los atributos sys.prefix y sys.exec_prefix apuntan al directorio base del entorno virtual.

Crear un entorno virtual en Python 3

Para crear un entorno virtual en Python 3 ejecutaremos la siguiente orden en un emulador de terminal,

python3 -m venv [directorio]

Al ejecutar esta orden se creará un nuevo directorio directorio, donde encontrarmos el archivo pyvenv.cfg, así como otros directorios como,

  • bin
  • include
  • lib
  • share

y un enlace simbólico de lib64 a lib.

Por ejemplo, si quiereo crear un entorno virtual llamado casa, ejecutaré la siguiente orden,

python3 -m venv casa

Trabajando en nuestro entorno virtual en Python 3

Para comenzar a trabajar en nuestro entorno virtual en Python 3, tenemos que ejecutar la siguiente orden,

source [directorio]/bin/activate

Así para comenzar a trabajar en mi recién creado entorno virtual en Python 3, la orden a ejecutar será,

source casa/bin/activate

En el momento que hayamos terminado, y queramos salir de nuestro entorno vitual, tan solo tendremos que ejecutar la orden deactivate.

Una característica interesante de Python, es que te permite instalar, actualizar y eliminar paquetes utilizando pip. Por defecto pip instala paquetes del Índice de Paquetes de Python.

Precisamente esto es una de las grandes ventajas de utilizar un entorno virtual en Python, que te permite instalar estos paquetes de forma aislada al resto de la instalación. Así por ejemplo podemos buscar paquetes relacionados con Twitter, ejecutando la orden, pip search [texto a buscar].

Por ejemplo, si queremos buscar paquetes relacionados con flickr, ejecutaremos la orden pip search flickr. Si encontramos el que buscamos, por ejemplo flickr_download, podemos instalarlo en nuestro entorno virtual, ejecutando la orden pip install flickr_download.

Un entorno virtual en Python 2.X

Al igual que hicimos anteriormente con Python 3, vamos a instalar los requerimientos necesarios para poder crear y trabajar con un entorno virtual en Python 2. Para ello, ejecutaremos la siguiente orden,

sudo apt-get install virtualenv python-virtualenv
Crear un entorno virtual en Python 3

Para crear un entorno virtual en Python ejecutaremos la siguiente orden en un emulador de terminal,

virtualenv [directorio]

Al ejecutar esta orden se creará un nuevo directorio directorio, donde encontrarmos el archivo pip-selfcheck.json, así como otros directorios como,

  • bin
  • include
  • lib
  • local
  • share

Por ejemplo, si quiereo crear un entorno virtual llamado casa, ejecutaré la siguiente orden,

virtualenv casa

Trabajando en nuestro entorno virtual en Python 2

Al igual que hicimos anteriormente con Python 3, para empezar a trabajar en nuestro entorno virtual en Python 2.X, tenemos que ejecutar la siguiente orden,

source [directorio]/bin/activate

De la misma manera, para salir de nuestro entorno vitual, tan solo tendremos que ejecutar la orden deactivate.

Conclusiones

Como has podido ver, un entorno virtual es una muy intersante herramienta de trabajo. Ya sea para desarrollar tus propios paquetes, para probar otros o para lo que necesites. Se trata de un entorno de trabajo controlado, que en ningún momento afectará a tu sistema, y donde podrás instalar las versiones correctas para que todo funcione perfectamente.


Más información,

2 comentarios en “Entorno virtual en Python. Como y para que. Ubuntu, Linux Mint, etc

  1. AR
    Arg0s hace 7 años

    Hola,

    Buen artículo!

    Aunque la entrada sea de hace unos meses, creo que estaría bien aclarar la diferencia entre venv y virtualenv. Tal y como está redactado parece un poco confuso cómo se cambia de la explicación de uno a otro.

    Felicidades por el blog!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *