Entornos de desarrollo con Python Virtualenv

develop python virtualenv debian archlinux

Python Virtualenv

Comenzando a migrar algunos scripts de bash a python estoy comenzando con python, hasta hace poco solo había hecho algunos despliegues de aplicaciones web con python y django, y utilizando entornos virtuales de python con virtualenv, pero no me había propuesto a investigar cómo funcionaban, ni tampoco los había utilizado para desarrollo.

En posts anteriores vimos el por qué usar entornos de desarrollo virtuales con Vagrant nos da una ventaja, aunado a esto, si comenzamos a desarrollar diferentes aplicaciones podemos aislar aún más nuestros desarrollos evitando posibles conflictos entre bibliotecas y módulos que usemos para nuestros desarrollos, aquí entra Virtualenv:

Virtualenv es una herramienta que crea ambientes aislados de python. Virtualenv crea un directorio el cual contiene los ejecutables necesarios y las bibliotecas y módulos de python que el ambiente necesitará.

Su instalación y uso lo veremos en dos escenarios: Linux y OSX

Linux (Debian y derivados)

En Debian tenemos a python 2.7 por default instalado, si queremos trastear con python 3 también, hay que instalarlo:

sudo apt-get install python-setuptools python3-dev

después de esto instalaremos pip (un sistema de gestión de paquetes utilizado para instalar y administrar paquetes de software escritos en Python.)

sudo easy_install pip

Una vez instalado pip instalamos virtualenv, y por qué instalarlo con pip? bien dependiendo de nuestra plataforma podemos encontrar este paquete en los repositorios de nuestra plataforma y muchas veces no están actualizados a su ultima versión, así que lo instalamos con pip y éste instalará la versión mas actual.

sudo pip install virtualenv

e instalamos virtualenvwrapper, un añadido a virtualenv que nos facilita el manejo, creación y activación de los entornos virtuales, en otro post veremos las diferencias y diferentes escenarios donde podemos utilizar uno u otro.

sudo pip install virtualenvwrapper

Si vemos bien los últimos dos comandos con pip, lo hacemos con sudo, con esto instalará los módulos de manera global para todo el sistema, si lo hiciéramos sin sudo se instalarán para el usuario que lo está ejecutando.

Ya instalado hay que agregar lo siguiente a nuestro archivo .bashrc:

export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

una vez instalado y configurado podemos crear nuestro primer entorno virtual:

mkvirtualenv nombredelentorno

en Debian y derivados el ejecutable de python por default es la versión 2, si queremos crear un entorno que haga uso de python 3 tenemos que especificarlo al momento de crear nuestro entorno:

mkvirtualenv nombredelentorno -p /usr/bin/python3

con esto tendremos creado nuestro entorno, y activado automáticamente y veremos en nuestra terminal al inicio entre paréntesis el nombre de nuestro entorno recién creado, con esto podemos ver que estamos dentro de un entorno:

En este ejemplo vemos cómo el entorno virtual está activo y se muestra en nuestro prompt al inicio con el nombre de "testvirt"

para desactivarlo ejecutamos:
deactivate

y para volver a activarlo:
workon nombredelentorno

Archlinux y derivados

Antergos, Archlinux, Manjaro

Para Archlinux tenemos que la versión default de python es la versión 3, y los paquetes de virtualenv varían un poco, teniendo una versión para python 2 y otra para python 3, y por default virtualenv crea los entornos con la versión 3, y hay que definir la versión 2 si queremos utilizarla.

Para instalar los paquetes necesarios ejecutamos:

pacman -S python-virtualenv python2-virtualenv

agregamos de igual forma a nuestro .bashrc o .zshrc las siguientes líneas:

export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

El uso y activación es igual que en otros sistemas.
Podemos consultar la excelente wiki de Arch para referencias: Wiki Archlinux - Python/Virtual environment


OSX

Al igual que la mayoría de los sistema Linux, OSX viene con una versión de python preinstalada, y en este caso lo mejor es instalar una versión de python alterna, ya que en alguna actualización del sistema puede ocasionar problemas.

Instalación de python con Brew

Si no tenemos instalado brew lo instalamos con la siguiente linea en terminal:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Una vez con brew instalado ejecutamos lo siguiente:

brew install python Y si queremos usar python 3, también lo instalamos:
brew install python3

Con esto brew instalará y pondrá los ejecutables de python en el siguiente path: /usr/local/bin

Brew instala y configura pip por nosotros, pero en comparación a la instalación que hicimos en Linux, no la haremos con sudo, lo haremos con nuestro usuario:

pip install virtualenv virtualenvwrapper

Despues de instalarlo, agregamos a nuestro archivo .bashrc o .zshrc si usamos ZShell

export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh