Actualmente estoy escribiendo un script de implementación para una aplicación django usando fabric. Me parece necesario / útil tener un sistema para versionar el virtualenv que usa la aplicación, en caso de que se necesite una reversión.
La forma más sólida que se me ocurre para hacer esto es crear virtualenvs con el nombre igual al hash md5 del contenido del archivo de requisitos. esto significa que cuando los requisitos cambien, la suma de verificación cambiará y puedo copiar/actualizar el virtualenv con un nuevo hash y conservar el antiguo hash virtualenv en caso de que necesite retroceder (entonces es solo cuestión de cambiar un enlace simbólico 'actual') .
El problema es que estoy usando la sintaxis del archivo de requisitos anidados, por ejemplo, en mi archivo de requisitos production.txt ( -r base.text ), por lo que el hash md5 no tendrá en cuenta los cambios de requisitos básicos, etc.
¿Hay algún pip de salida que pueda proporcionar para analizar estos archivos antes de instalarlos? No quiero tener que instalarlos y luego congelar pip solo para descubrir si algo ha cambiado.
En lugar de usar requisitos anidados, ¿por qué no usar herramientas simples de Unix como cat para calcular el md5. Y solo use múltiples archivos de requisitos.
O si realmente desea cumplir con los requisitos anidados, deberá escribir un pequeño script de shell que busque -r file.txt y lo agregue a su cálculo md5.
Aunque es una buena idea. Hashing el archivo requirements.txt y guardando el env usando ese nombre. También hace que el almacenamiento en caché sea fácil y rápido en sistemas de compilación distribuidos.