Black_spirit, desole je voyagais donc j'ai mis un peu de temps a repondre.
De ce que j'ai vu, la source principale de dependence de developpement c'est setup.py. C'est la que tu encode concretement les dependances.
requirements.txt c'est utilise pour deployer ton logicile avec les dependances dans une version precise. (Oui, concretement tu peux mettre des dependances non exacte dans requirements.txt, mais non en fait, lire la suite.) Du coup ton environmenet de test automatique devrait recharger requirements.txt a chaque deployment. Et probablement ton script de deployement devrait faire ca. La plupart des hoster font ca en pratique.
Le probleme fondamentale que tu recontres est que l'environment de python c'est YOLO. Tu n'as vraiment aucune garantie de rien du tout. Quand tu recupere un paquet debian, tu sais que le paquet a ete verifie par les developeur debian. Quand tu recupere un paquet sur pip, tu ne sais absolument rien. En theorie, il y a du versionnement semantique et tu peux retirer retirer les paquet qui marche pas, et il y a des paquet beta. Mais en pratique, c'est le grand ouest et une grosse partie de la communaute fait n'importe quoi.
Donc concretement tu ne peux pas suppose que ton application marchera avec une mise a jour de n'importe quel paquet. Du coup il faut fixer toutes les versions de tous les paquets dans requirements.txt ou sinon tu ne peux etre sur d'absolument rien. Et il faut aussi avoir une batterie de test qui couvre tout le code parcequ'encore une fois tu ne peux etre sur de rien parcequ'a chaque changement d'une dependance, tu pourrais avoir une refonte complete de l'API alors que seulement le patchlevel a change parceque personne ne verifie rien sur les repo de pip.
Oui, python c'est l'horreur pour faire du developpement logiciel.