6 votes

Comment personnaliser le requirements.txt de pip dans Heroku lors du déploiement ?

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 ?

17voto

yellottyellott Points 965

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.

0voto

Yuval Adam Points 59423

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X