jueves, 3 de marzo de 2011

Virtualenv

Virtualenv permite crear entornos virtuales de Python aislados unos de otros con sus propios conjuntos de paquetes. El intérprete python es realmente el mismo en todos los entornos virtuales, sin embargo, los paquetes que se instalen desde el entorno virtual pertenecen al ámbito de cada entorno virtual. Los paquetes instalados en el ámbito del sistema están disponibles desde cualquier entorno virtual.
Cuando se desarrolla en python puede ser necesario un paquete de un versionado diferente al que está instalado en el ordenador. Para esto se crea un entorno virtual de python con su propio conjunto de paquetes con el versionado deseado, así no se interfiere en los paquetes instalados en el ámbito del sistema o en al ámbito de otro entorno virtual.

Instalación de Virtualenv
Esta instalación ha sido realizada en el siguiente sistema:
  • Kubuntu 10.10 64 bit
  • Python 2.6.6
Para instalar virtualenv lo más sencillo es usar el gestor de paquetes easy_install:

$ sudo easy_install virtualenv
install_dir /usr/local/lib/python2.6/dist-packages/
Searching for virtualenv
Reading http://pypi.python.org/simple/virtualenv/
Reading http://virtualenv.openplans.org
Best match: virtualenv 1.5.1
Downloading http://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.5.1.tar.gz#md5=3daa1f449d5d2ee03099484cecb1c2b7
Processing virtualenv-1.5.1.tar.gz
Running virtualenv-1.5.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-cnxeNj/virtualenv-1.5.1/egg-dist-tmp-Ypb83B
warning: no previously-included files matching '*.*' found under directory 'docs/_templates'
Adding virtualenv 1.5.1 to easy-install.pth file
Installing virtualenv script to /usr/local/bin
Installed /usr/local/lib/python2.6/dist-packages/virtualenv-1.5.1-py2.6.egg
Processing dependencies for virtualenv
Finished processing dependencies for virtualenv

Crear un entorno virtual
Para crear un entorno virtual sencillamente usar el comando:
$ virtualenv test1

He aquí algunas opciones interesantes de la utilidad virtualenv:
--no-site-packages: no incluir los paquetes que se encuentran en el site-packages del ámbito del sistema.
-p PYTHON_EXE: usar el intérprete PYTHON_EXE en lugar del intérprete por defecto que es el que ha sido usado para instalar virtualenv.

Usar el entorno virtual
Para empezar a usar el entorno virtual ejecutar:
$ source test1/bin/activate

El indicador del sistema cambiará, incluyendo el directorio del entorno virtual activo entre paréntesis. Para testear el entorno se puede instalar por ejemplo el paquete yolk y ejecutarlo:
(test1) $ easy_install yolk
(test1) $ yolk -l
Python          - 2.6.6        - active development (/usr/lib/python2.6/lib-dynload)
pip             - 0.8.1        - active 
setuptools      - 0.6c11       - active 
wsgiref         - 0.1.2        - active development (/usr/lib/python2.6)
yolk            - 0.4.1        - active 

Para salir del entorno virtual:
(test1) $ deactivate
y se vuelve al indicador normal.

Fuera del entorno virtual la utilidad yolk no estará disponible.