2011-03-02 12 views
11

¿Qué herramientas o mejores prácticas están disponibles para rastrear y administrar las dependencias del software que estoy desarrollando? Estoy usando Python/Django, y hasta la fecha, todos mis requisitos de software son de código abierto.¿Herramientas/mejores prácticas para administrar dependencias de aplicaciones?

Estoy desarrollando una aplicación web que, si bien es modesta, tiene una serie de dependencias. Como mínimo, me gustaría rastrear el software y el número de versión para estos. Supongo que también me gustaría rastrear las configuraciones del software requerido, y posiblemente algunas cosas a nivel del sistema (ID de usuario, si corresponde, del proceso del software requerido por la instancia, y los permisos requeridos del mismo).

(Mejor aún, sería algo que me ayudaría a configurar un servidor para la aplicación cuando esté listo para implementar. Aún mejor sería algo que me permita rastrear el servidor de nombre http y dns utilizado para soportar el aplicación. Pero se rumorea que el títere es una herramienta para ese tipo de cosas.)

Respuesta

18

Utilice pip y virtualenv. Con virtualenv, puede crear un "entorno virtual" que tenga todos sus paquetes de Python instalados en un directorio local. Con pip install -r, puede instalar todos los paquetes enumerados en un archivo de requisitos específico.

ejemplo áspera:

virtualenv /path/to/env --no-site-packages --unzip-setuptools # create virtual environment 
source /path/to/env/bin/activate # activate environment 
easy_install pip # install pip into environment 
source /path/to/env/bin/activate # reload to get access to pip 
pip install -r requirements.txt 

Dónde requirements.txt contiene líneas como esta:

django==1.3 

Lo bueno de esto es que requirements.txt sirve tanto como documentación y como parte del procedimiento de instalación, por lo que hay no hay necesidad de sincronizar los dos.

+0

De acuerdo, una actualización: puede crear sus propios paquetes de pip usando setuptools, y pueden enumerar sus dependencias. Si su propia base de código crece demasiado, puede estructurarla como una herramienta de configuración independiente que depende de los paquetes. –

+1

¿Qué pasa si una o algunas de las dependencias son distribuciones que ha escrito usted mismo pero que no necesariamente desea publicar en PIP? – Santa

+2

@Santa: puede simplemente dar la URL a su repositorio interno, o incluso a un paquete comprimido en un servidor. –

Cuestiones relacionadas