python deployment heroku requirements.txt

python - ¿Cómo personalizar un requirements.txt para múltiples entornos?



deployment heroku (1)

Tengo dos ramas, Desarrollo y Producción. Cada uno tiene dependencias, algunas de las cuales son diferentes. El desarrollo apunta a las dependencias que están en desarrollo. Del mismo modo para la producción. Necesito implementar en Heroku que espera las dependencias de cada rama en un solo archivo llamado ''requirements.txt''.

¿Cuál es la mejor manera de organizarse?

En lo que he pensado:

  • Mantenga archivos de requisitos separados, uno en cada rama (debe sobrevivir fusiones frecuentes!)
  • Dile a Heroku qué archivo de requisitos quiero usar (¿variable de entorno?)
  • Escribir implementar scripts (crear una rama temporal, modificar el archivo de requisitos, confirmar, implementar, eliminar la rama temporal)

Puede poner en cascada sus archivos de requisitos y usar el indicador "-r" para indicar a pip que incluya el contenido de un archivo dentro de otro. Puede dividir sus requisitos en una jerarquía de carpetas modular como esta:

`-- django_project_root |-- requirements | |-- common.txt | |-- dev.txt | `-- prod.txt `-- requirements.txt

El contenido de los archivos se vería así:

common.txt:

# Contains requirements common to all environments req1==1.0 req2==1.0 req3==1.0 ...

dev.txt:

# Specifies only dev-specific requirements # But imports the common ones too -r common.txt dev_req==1.0 ...

prod.txt:

# Same for prod... -r common.txt prod_req==1.0 ...

Fuera de Heroku, ahora puedes configurar entornos como este:

pip install -r requirements/dev.txt

o

pip install -r requirements/prod.txt

Como Heroku busca específicamente "requirements.txt" en la raíz del proyecto, simplemente debe reflejar prod, así:

requirements.txt:

# Mirrors prod -r requirements/prod.txt