¿Cómo mantener actualizados los archivos de requisitos `requirements_*.txt` de tiempo de ejecución y desarrollo?
Me gustaría mantener varios archivos requirements*.txt
actualizados mientras trabajo en un proyecto. Algunos paquetes en los que depende mi proyecto son necesarios durante la ejecución, mientras que otros solo son necesarios durante el desarrollo. Dado que estos paquetes pueden tener sus propias dependencias, es difícil determinar qué dependencia debería estar en qué archivo requirements*.txt
.
Si quiero hacer un seguimiento de las dependencias de tiempo de ejecución en requirements_prod.txt
y de las dependencias de desarrollo en requirements_dev.txt
, ¿cómo puedo mantener ambos archivos actualizados y limpios si agrego paquetes durante el desarrollo? Simplemente ejecutar pip freeze > requirements_prod.txt
listaría todas las dependencias instaladas, incluidas las que solo se necesitan para el desarrollo. Esto contaminaría cualquiera de los archivos requirements_*.txt
.
Idealmente, me gustaría marcar un paquete en la instalación como ‘desarrollo’ o ‘tiempo de ejecución’ y que este (y sus propias dependencias) se escriban en el archivo requirements_*.txt
correcto.
Edit:
@Brian: Mi pregunta es ligeramente diferente a esta pregunta porque me gustaría que mis archivos requirements_*.txt
estén uno junto al otro en la misma rama, no en ramas diferentes. Así que mis archivos requirements_*.txt
siempre deberían estar en los mismos commits.
davy.ai
Para mantener varios archivos
requirements*.txt
actualizados mientras trabajas en un proyecto, un enfoque que podrías utilizar es el de utilizar entornos virtuales separados para entornos de desarrollo y producción. Esto asegura que solo los paquetes necesarios se instalan en cada entorno, y ayuda a mantener los archivosrequirements_*.txt
limpios y actualizados.Para lograr esto utilizando
virtualenv
ypip
, sigue estos pasos:dev
e instala cualquier dependencia solo de desarrollo usandopip install
:prod
e instala cualquier dependencia de tiempo de ejecución usandopip install
:pip install --editable
e indica si es una dependencia de desarrollo o de tiempo de ejecución utilizando las banderas-e
y-r
:Esto instalará el paquete como paquete editable y lo agregará como un requisito al archivo
requirements_*.txt
apropiado, dependiendo de si es una dependencia de desarrollo o de tiempo de ejecución.Cuando estés listo para implementar en producción, activa el entorno
prod
e instala todos los paquetes necesarios usandopip install -r requirements_prod.txt
.Al utilizar entornos virtuales separados para desarrollo y producción e instalar intencionalmente las dependencias en cada entorno, puedes mantener tus archivos
requirements_*.txt
limpios y actualizados. Además, este enfoque te permite cambiar fácilmente entre entornos de desarrollo y producción sin tener conflictos de dependencias.