Je déploie une application Python Django sur Heroku, et j'aimerais personnaliser le fichier requirements.txt (en ajoutant une dépendance git-backed avec mot de passe) uniquement lorsque je déploie sur certains environnements comme Heroku. J'adorerais définir cela dans une variable d'environnement ou autre, mais je ne pense pas que Pip dispose d'une fonctionnalité de ce type. Mon idée était d'utiliser un crochet que Heroku fournit pour placer un script qui serait ajouté à mon requirements.txt avant que les dépendances ne soient installées. Est-ce possible ?
Réponses
Trop de publicités?Vous pouvez inclure un fichier d'exigences dans un autre fichier d'exigences.
# requirements.txt
-r requirements/base.txt
# requirements/base.txt
django==1.6
# requirements/heroku.txt
-r requirements/base.txt
djpostgresurlthing==1.0.0
# requirements/dev.txt
-r requirements/base.txt
django-debug-toolbar
Je garde généralement un requirements.txt
à la racine du projet, qui inclut simplement d'autres fichiers d'exigences (généralement prod ou une base) et crée un fichier requirements/
avec des éléments spécifiques à l'environnement. Donc, localement, j'aurais pip install -r requirements/dev.txt
et sur le serveur pip install -r requirements/prod.txt
.
Pour votre cas avec heroku, vous avez besoin que le fichier Root requirements.txt soit pour heroku. Vous pouvez donc simplement utiliser ce fichier pour inclure votre fichier d'exigences heroku.
# requirements.txt
-r requirements/heroku.txt
Il y a probablement un moyen de dire à Heroku d'utiliser un fichier différent. Mais ce serait un moyen facile de le contourner.
Vous pouvez effectuer une authentification HTTPS standard :
# requirements.txt
git+https://user:password@example.com/dir/repo.git
Mais une manière beaucoup plus propre serait d'héberger votre propre ensemble d'exigences, voir : https://devcenter.heroku.com/articles/python-pip#private-indexes
Pour gérer les différentes exigences de l'environnement, vous pouvez simplement utiliser requirements.txt
pour la production et requirements-dev.txt
pour le développement local, ou l'une des suggestions de @yellottyellott pour inclure les dépendances d'autres fichiers.