Virtualenv: aislando nuestro entorno python
Con el fin de facilitarnos el despliegue, siempre resulta interesante crear un entorno aislado para realizar pruebas. Lo ideal sería disponer de un entorno en local lo más parecido posible al entorno remoto.
Pues esto es posible gracias a VirtualEnv .
Instalación
Podemos disponer de VirtualEnv en Windows, GNU/Linux y Mac, ya que es python y, por tanto, portable.
Los detalles… se los dejo a la instalación estándar, ya que éstos pueden variar con facilidad. Es paquete Debian oficial, lo que puede facilitar mucho las cosas :D
Despliegue del entorno
Crear un entorno es tan complejo como:
|
|
Sustituyendo “ENTORNO” por el nombre del entorno a utilizar.
Podemos utilizar la opción -p
para indicar la versión de python a utilizar:
|
|
También disponemos de la opción “–no-site-packages”, que nos aísla aún más del sistema de paquetes del sistema.
Activándolo
Para activar el entorno virtual basta con ejecutar source sobre uno de los archivos de nuestro entorno:
|
|
Para desactivarlo, basta ejecutar deactivate, que se encontrará disponible cuando estemos dentro del entorno:
|
|
Ejemplo completo
Voy a crear un entorno y activarlo, demostrando que no estamos utilizando el entorno habitual en la máquina:
|
|
Instalando aplicaciones
Con el fin de poder instalar aplicaciones, nuestro entorno cuenta con dos potentes programas: distribute e easy_install .
Tendremos que ejecutar easy_install
de dentro de nuestro entorno, aunque podemos hacerlo sin entrar en él. es recomendable haber creado el entorno con la opción --no-site-packages
.
Por ejemplo, para instalar django:
|
|
Automatizando el proceso
Es posible que necesitemos repetir este proceso muy a menudo, incluso en máquinas en las que no tengamos virtualenv.
Para ello podemos crearnos un pequeño script con las siguientes condiciones:
- Importaremos virtualenv.
- Crearemos el método “after_install”, que admite dos parámetros:
opciones
yDirectorio de instalación
. - El script anterior se embeberá en una llamada a
virtualenv.create_bootstrap_script
, y guardaremos el resultado en disco.
De esta manera, nuestro script creará un nuevo script que es el que podemos redistribuir y ejecutar en máquinas en las que virtualenv no está disponible.
Veamos un ejemplo:
|
|
Que no os despiste la instrucción textwrap.dedent
, que es para que las triples comillas no nos jueguen malas pasadas en el código subyacente.
Posiblemente sea buena idea mantener el script en otro fichero y leerlo, con el fin de tener resaltado de sintaxis.
En este ejemplo comprobaréis que estoy instalando django y django-registration.
Usos
Habitualmente, se utiliza virtuelenv junto con fabric , pero dejo este tutorial para otra ocasión.
Podemos utilizarlo para aislar un sistema, sin necesidad de cargar toda una máquina virtual.
También podemos usarlo para tener sistemas fácilmente replicables.
Más información
Debo advertir que la documentación sobre virtualenv deja bastante que desear :(, pero aquí tenéis algunos enlaces para solucionar este problema: