25 diciembre 2014

Exportando e importando un virtualenv

Una cosa que he aprendido recientemente de los entornos virtualenv es que facilitan la exportación de proyectos.

Cuando le das un proyecto a un amigo o colaborador, dentro de un archivo comprimido, tienes que decirle qué dependencias instalar para ejecutar el proyecto. Afortunadamente virtualenv (bueno, en realidad pip) te da una manera automatizada de hacerlo.

Supón que tenemos una carpeta de proyecto que quieres exportar y supón que has hecho un virtualenv para ese proyecto. Con tu virtualenv activado, ejecuta:

(env)dante@Camelot:~/project-directory$ pip freeze > requirements.txt


Esto creará un  fichero llamado requirements.txt. En ese fichero, pip colocará todos los nombres de los paquetes instalados en el virtualenv, junto con sus versiones. Ese fichero generado (en nuestro caso requirements.txt) debería se incluido en el paquete que exportemos.

Para importar un proyecto exportado de esta manera, el importador debería descomprimir la carpeta de proyecto y crear un virtualenv en esa localización. Con ese virtualenv activado, pip debería ejecutarse de esta manera:

(env)otherguy@host:~/project-directory$ pip install -r requirements.txt

Esta llamada a pip instalará todos los paquetes y versiones incluidos en el fichero requierements.txt. Fácil y eficiente.