Cuando desarrollamos en Python es común utilizar diferentes versiones de algunos paquetes para cada proyecto, por ejemplo, hay ocasiones en que tenemos un proyecto que está usando Django 1.6 y queremos crear uno nuevo con Django 1.8. Si instaláramos Django de forma global simplemente sería imposible mantener varios proyectos al mismo tiempo y esto nos causaría problemas, pero afortunadamente en Python tenemos una herramienta simple pero muy potente: los ambientes virtuales.

Un ambiente virtual es un espacio independiente de otros ambientes virtuales, que nos ayuda a mantener separados los paquetes de otros ambientes virtuales y los instalados de forma global. Un ambiente virtual es como una caja en donde vas a instalar los paquetes que solo van a ser usados por un proyecto en particular, de esa forma se resuelven los conflictos al tener varias versiones del mismo paquete.

Ambientes virtuales

Instalando Virtualenv

Primero que nada, antes de usar los ambientes virtuales, tenemos que instalar virtualenv, que es la utilería que nos genera los ambientes virtuales.

Los comandos aquí presentados funcionan para macOS y Linux

Creando un ambiente virtual con virtualenv

Cuando creamos un ambiente virtual, lo que virtuales hace es crear una carpeta especial en donde se van a instalar todos los paquetes, de esa forma tendrás en un solo lugar todo lo necesario para trabajar. Vamos a suponer que quieres empezar un proyecto nuevo

Una vez dentro de nuestra carpeta, es hora de crear nuestro ambiente virtual

Esto nos creará una carpeta con la siguiente estructura

En bin/ se encuentran todos los archivos que nos ayudarán a interactuar con los ambientes virtuales, en include/ se encuentran las cabeceras de C que nos ayudarán a compilar algunos paquetes de Python, y por último en lib/ se encuentra una copia de la versión de Python que estamos usando, dentro de ella se encuentra la carpeta myproject/lib/python2.7/ site-packages/ donde se instalarán los paquetes de nuestro ambiente virtual. Antes de seguir hay que tomar en cuenta lo siguiente:

  • El nombre myproject es el nombre del ambiente virtual, puedes ponerle el nombre que tu desees
  • Puedes crear la carpeta del ambiente virtual donde desees
  • Si instalas un paquete de Python en este paso, lo estarás instalando de manera global (cosa que no queremos), para instalarlo en el ambiente virtual debes leer la siguiente sección

Activar un ambiente virtual

Activar nuestro ambiente virtual es muy fácil

De esta forma tendremos activado nuestro ambiente virtual. Si te fijas en tu terminal, podrás ver en el prompt el nombre del ambiente virtual

Una vez hecho esto ya puedes empezar a instalar los paquetes de python

Instalando paquetes en el ambiente virtual

Instalar paquetes en el ambiente virtual es sencillo, simplemente usamos pip como siempre para instalarlo, pero antes, debemos checar si hay algún paquete instalado, para ello usamos pip freeze para mostrar todos los paquetes instalados, si lo hacemos la primera vez, no debería haber ningún paquete instalado.

Ahora instalemos un paquete, en este caso Django

Ahora si hacemos un pip freeze nos debería aparecer django instalado

Como puedes ver, tenemos Django 1.8 instalado, al utilizar pip install django , pip nos instala la última versión, podemos instalar una versión diferente al indicarle cuál es la que queremos, por ejemplo pip install django==1.6.6  Algo muy potente que tienen los ambientes virtuales, es que puedes replicarlos en diferentes máquinas instalando los mismos paquetes, de esa forma tendrás el mismo ambiente de trabajo en cada computadora. Por ahora solo tenemos instalado un paquete, pero cuando trabajemos con proyectos más grandes instalar cada paquete a mano en cada computadora sería algo tedioso, pero gracias a pip freeze podemos automatizar un poco la instalación de paquetes. Lo único que necesitamos es que todos esos paquetes estén en un archivo de texto.

Esto nos creará un archivo llamado requirements.txt con todos los paquetes instalados en nuestro ambiente virtual, si tienes bajo control de código esta carpeta entonces cuando vayas a tu otra computadora o a una máquina virtual o servidor, simplemente se descargará la última versión de este documento, si no con copiar y pegar el archivo podrás instalar los paquetes. Ya que tengas ese archivo, si quieres instalar todos los paquetes debes entrar al ambiente virtual en la otra computadora e instalarlo con pip

Si le pasamos -r a pip install entonces instalará todos los paquetes del archivo, de esa forma no tendremos que instalarlo uno a uno y nos aseguramos que todos los paquetes se instalen en la versión que tienes en tu ambiente virtual.

Desactivar un ambiente virtual

Cuando ya no queremos usar el ambiente virtual, simplemente usamos el siguiente comando

Eliminar un ambiente virtual

Eliminar un ambiente virtual es tan sencillo como borrar la carpeta del ambiente virtual, en nuestro caso, con eliminar la carpeta myproject

Usando virtualenvwrapper para manejar ambientes virtuales

Aunque el uso de virtualenv es sencillo, a veces se puede convertir en tedioso, principalmente cuando queremos activarlo. Para hacer más llevadero el uso de ambientes virtuales podemos instalar virtualenvwrapper en nuestros paquetes globales. Primero tenemos que instalarlo

Ahora necesitamos configurar en dónde se van a guardar todas las carpetas de nuestros ambientes virtuales, esto es muy útil para tener centralizado todo y si algo sale mal, ya sabemos a donde ir y podemos activarlo o borrarlo manualmente, primero debemos abrir el archivo de configuración de nuestra terminal, yo estoy utilizando zsh por lo cual mi archivo de configuración será .zshrc y si usas bash entonces será .profile En tu archivo de configuración es necesario que escribas lo siguiente:

Una vez que reinicies el shell, ya estarás configurado para trabajar con ambientes virtuales. Para crear un ambiente virtual solamente usamos

workon  también nos sirve para listar todos los ambientes virtuales que tenemos, en caso de que hayamos olvidado el nombre de alguno

Para eliminar un ambiente virtual solo escribimos rmvirtualenv

Una cosa maravillosa de virtualenvwrapper es que no necesitamos estar en una carpeta en particular, ya que todo se instala y borra en la carpeta que configuramos en nuestro archivo de shell. Espero que esta pequeña introducción les haya ayudado para empezar a trabajar con ambientes virtuales en python, es la mejor manera de trabajar y te evitas muchos problemas.

%d bloggers like this: