sábado, 5 de octubre de 2013

Preparación de un ambiente de desarrollo python sin acoplamiento de dependencias.

Ingredientes:
  1. python 3 o 2
  2. virtualenv
  3. virtualenvwrapper
  4. IDE JetBrains PyCharm ( o el que te guste más, recomiendo pycharm. )
Para comenzar, se debe instalar la versión del interprete python, que se requiera para el proyecto o incluso podría instalar ambas ramas 2.x y 3.x.

Una vez tenga el interprete python instalado se puden instalar nuevas librerias con la herramienta pip (requiere ser instalado manualmente si utiliza OSX o Windows) o el package manager del sistema.(ports, pacman, MacPorts, apt, yum, etc.)

Para todos los ejemplos se usa pip, ya que es propio de python y no varia de sistema operativo.

¿Que es virtualenv?
virtualenv es una herramienta que permite crear entornos de desarrollo en python aislados, lo cual es de gran ayuda cuando se requiere trabajar con varios proyectos, debido a que evita el conflicto de librerías. También, mediante pip, permite exportar un lista de las librerías e importarlas en un nuevo entorno.

¿Que es virtualenvwrapper?
virtualenvwrapper no es más que un envoltorio con funciones en shell, para ayudar a trabajar con virtualenv de forma más rápida, cómoda y eficiente. (para Windows existe virtualenvwrapper-win)

pip install virtualenv
pip install virtualenvwrapper

Una vez instalado se debe configurar el .bashrc o profile de la Shell que este utilizando, soporta: bash, zsh y ksh

Edite el profile de su shell preferida y agregue la siguientes variables de entorno:

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

Guarde los cambios y recargue su profile,  ejemplo:

soruce .bashrc
mkdir $WORKON_HOME

A partir de aquí viene la parte emocionante y que más nos interesa, al tener cargado en nuestro $SHELL las funciones de viertualenvwrapper.sh, ya se puede comenzar a trabajar con el virtualenv e instalar paquetes con pip u otro PKGMGR de elección particular, todo dentro del entorno virtual.

Funciones básicas más importantes:

workon
mkvirtualenv
rmvirtualenv
lsvirtualenv


Comenzar a trabajar con el wrapper, se utiliza la instrucción workon permite ver los virtualenv creados y seleccionar un virtualenv para trabajar, el siguiente ejemplo muestra como crear un virtualenv:

workon
mkvirtualenv -p /usr/bin/python3 [test_env]

Ya está creado el nuevo virtualenv test_env, el cual puede ser integrado dentro del PyCharm IDE para trabajar e instalar paquetes como django.
Al no poner --no-pip contamos con pip dentro del virtualenv, con lo que se puede importar todos los paquetes de un requirements.txt anteriormente exportado con pip o en un futuro exportarlos para que nuestros colegas de profesión creen su propio entorno virtual.

Exportar paquetes requeridos (recomiendo hacer esto y ponerlo en el CSM[git|svn|mercurial|etc.] del proyecto)

pip freeze requirements.txt

Instalar los paquetes del requirements.txt

pip install -r requirements.txt

Con esto estaría relativamente cubierto todo lo referente a preparar un entorno de desarrollo lejos del caos!
Suerte.