Virtualenv y Pip para crear Entornos Virtuales de Python

Virtualenv y Pip para crear Entornos Virtuales de Python

Virtualenv es una herramienta para crear entornos de Python aislados, es decir ambientes completamente separados de la instalación global de Python, con sus propias dependencias y versiones.

Cuando comencé a programar aplicaciones web, Django era uno de los frameworks MVC de moda. Aún no existía React, el ecosistema Javascript se reducía a jQuery, Node.js era una novedad y Rails era la joyita. Era tanto el hype con Django que venia creciendo muy rápido y con un ciclo de release muy corto, por lo que salían versiones muy seguido con bugfixes, nuevas features y algunos breaking changes.

En mi primera aplicación había usado Django 1.4 pero al comenzar a programar la segunda aplicacion el framework ya se encontraba en la version 1.8, y al actualizar esta dependencia desate el caos. Aquella primera aplicación web se empezó a romper por todos lados. Era obvio, los breaking changes entre Django 1.4 y 1.8 hacían que nada funcionase como debía.

Buscando una solución fue que encontré Virtualenv. Con esta herramienta pude crear dos entornos virtuales completamente aislados donde instalar las dependencias de cada proyecto sin que interfieran entre si. Esto me permitía correr las dos aplicaciones en paralelo sin inconvenientes, y me daba la seguridad de que podía instalar y actualizar cualquier dependencia sin miedo a romper otra cosa mas que la misma aplicación en la que me encontraba trabajando.

Virtualenv ya se ha vuelto un estándar para la comunidad, tal es así que desde Python 3.3 se agrego al core el modulo venv, que nos permite crear entornos virtuales de forma nativa. Aunque aún no posee todas las virtudes de Virtualenv se sabe que es un modulo en continuo desarrollo. Peeeeero... por el momento Virtualenv sigue siendo la mejor opción.


¿Cómo instalo Virtualenv?

Virtualenv se instala, al igual que la mayoría de las dependencias de Python, con pip. Solo necesitamos correr este comando:

$ pip install virtualenv



¿Cómo se usa Virtualenv?

Virtualenv es muy sencillo de usar y no requiere configuración. Generalmente solo necesitaremos de 3 comandos que nos permitirán crear, activar y desactivar los entornos virtuales.

Hay distintas maneras de organización, algunos programadores prefieren mantener todos sus entornos virtuales dentro de un mismo directorio, pero yo personalmente prefiero crearlos dentro del directorio de cada proyecto. De esta manera puedo asignarle siempre el mismo nombre, y me resulta mucho mas sencillo para trabajar.

Para crear un entorno virtual primero debemos ubicarnos en el directorio elegido y luego ingresar el siguiente comando:

$ virtualenv env


Este comando nos creará dentro de la carpeta env un entorno virtual con el interprete de Python por defecto de nuestro sistema operativo.

Y si necesitamos crear un entorno con otra versión de Python?

Sencillo... usamos el flag --python e indicamos la ruta del interprete de Python que querramos:

$ virtualenv --python=/usr/local/bin/python3.8 env


El entorno virtual instalara pip y wheel por defecto, de manera que con solo activarlo ya podremos comenzar a instalar las dependencias que necesitamos.

Para activar el entorno virtual nos ubicamos en el directorio donde lo hemos creado y ejecutamos el siguiente comando:

# Mac y Linux
$ source env/bin/activate

# Windows
> env\Scripts\activate 


El prompt de nuestra consola ahora deberá mostrarnos el nombre del entorno virtual, lo cual nos da la seguridad de que se activo correctamente:

(env) $


Por último, una vez que hayamos terminado de trabajar, o si necesitamos cambiar de entorno, lo desactivamos con el siguiente comando:

(env) $ deactivate


Para borrar un entorno virtual basta simplemente con eliminar su carpeta.

Con estos comandos ya tenemos practicamente todo lo que necesitamos para usar Virtualenv, pero en la ayuda podemos consultar las demás opciones disponibles:

$ virtualenv --help


Por último, nunca te olvides de ir guardando las dependencias de tus proyectos con el comando freeze de pip, ya que este nos permitirá replicar nuestro entorno virtual en otro equipo de manera sencilla y rápida:

# Generar un archivo con las dependencias
$ pip freeze > requirements.txt

# Instalar las dependencias desde el archivo generado
$ pip install -r requirements.txt



Conclusiones

Espero que esto te sirva si estas empezando a programar con Python, y recordá que la mejor manera de aprender es haciendo, y al hacer vamos a equivocarnos.

Tenemos que darle mucho amor a lo que aprendemos desde la necesidad, porque nos permite comprender el valor real que nos aporta para resolver nuestro problema, y puedo asegurarte que es un aprendizaje que vamos a incorporar para siempre.

Gracias por haber llegado hasta el final. Si este post te gustó dejame un comment o mandame un tweet (@luciano_dev) porque me interesa conocer tu opinión.

¡Hasta el próximo post! ❤️

comments powered by Disqus