fitoria's blog

Posted Mon 28 November 2011

Django Suite III: Usando virtualenv y pip.

Tercera entrega de la serie sobre Django, esta vez no hablaré del framework en si, sino de un par de herramientas básicas del ecosistema de Python para ayudarnos a ser mas ordenados a la hora de desarrollar proyectos.

Virtualenv es una herramienta que nos ayuda a crear ambientes aislados para Python en palabras mas simples instala las bibliotecas e intérprete en una carpeta separada a la de nuestra instalación en el sistema operativo, la ventajas están en que nos provee una manera fácil, rápida, segura y reproducible de hacer desarollo y pruebas de diversas aplicaciones.

Por otra parte pipes una herramienta para instalar paquetes de Python desde el Python Package Index que es el repositorio comunitario de paquetes. En conjunto con virtualenv, pip nos ayuda a tener todo organizado y limpio.

Usando Virtualenv

Primeramente lo instalamos con nuestro manejador de paquetes favorito, en caso de ubuntu el paquete se llama "python-virtualenv" luego procedemos a crear nuestro primer ambiente virtual.

virtualenv primer_ambiente --no-site-packages

Donde primer_ambiente es el nombre que deseamos ponerle y--no-site-packages es un parámetro para que se cree un ambiente totalmente limpio tal y como fuera una instalación básica de python sin ninguna biblioteca extra. La ejecución de este comando creará una carpeta en el directorio en donde lo ejecutamos, recomiendo crear en su directorio $HOME una carpeta llamada virtualenvs para guardar todos los que vayamos creando en un solo lugar. Para activarlo hacemos lo siguiente:

source /path/a/primer_ambiente/bin/activate

Sabremos que está activo por que en nuestra consola aparecerá (primer_ambiente) en el prompt, ya en nuestro ambiente podremos usar pip para confirugrarlo a nuestro gusto.

Para volver a la normalidad usamos el comando:

deactivate

Usando pip

La función principal de pip: instalar, actualizar y eliminar paquetes nos enfocaremos en esas tres funciones.

Instalar:

pip install django

pip install django==1.3.1

La primera línea instalaría django en la versión mas actual del pypi, mientras que en la segunda con el operador de igualdad podemos forzar la instalación de una versión específica de django o cualquier paquete requerido, esto es muy útil a la hora de tener incompatibilidades o código legacy.

Desinstalar

pip uninstall django

Simplemente elimina el paquete especificado.

Actualizar

pip install django --upgrade

Instalará la versión mas actual del paquete ya instalado previamente.

Congelar

pip freeze > requirements.txt

Esto produce un archivo de requemientos en el formato que pip puede entender, el archivo de requerimientos detalla las dependencias que tiene un ambiente, su formato acepta tanto origenes del pypi, paquetes en formato tar.gz repositorios en git, mercurial y svn. Comúnmente nos encontraremos de un requirements.txt en muchos proyectos.

Si ejecutamos este comando en primer_ambiente seguramente tendremos un par de requerimientos, django que hemos instalado manualmente y distribute, que viene por defecto.

Instalar desde un archivo de requerimiento.

pip install -r requirements.txt

Esto leerá el archivo de requerimientos y lo instalará en el ambiente actual.

¿De qué nos sirve todo esto?

Simple: orden, orden, orden! Ventajas de usar virtualenv + pip:

  1. reproducible
  2. fácil de compartir por medio del archivo de requerimiento
  3. no afecta los paquetes del sistema
  4. nos ayuda a la hora de hacer deployments con django.

Ahora repitan conmigo: "todo proyecto de django deberá tener su propio virtualenv"

Lectura extra:

Virtualenvwrapper: un interesante proyecto que provee comandos mas fáciles de recordar para crear, usar y activar virtualenvs.

Categories: django, programacion,

Comments