112 votes

Quand utiliser le fichier d'exigences pip par rapport à install_requires dans setup.py?

Je suis en utilisant le pip avec virtualenv de paquet et l'installer quelques librairies Python.

J'imagine que ce que je fais, c'est un scénario assez commun. Je suis le responsable sur plusieurs bibliothèques pour laquelle je peux spécifier les dépendances de manière explicite. Quelques-uns de mes bibliothèques dépendent des bibliothèques tierces qui ont des dépendances transitives sur lequel je n'ai aucun contrôle.

Ce que je suis en train de réaliser est une pip install sur l'une de mes bibliothèques à télécharger/installer l'ensemble de ses en amont des dépendances. Ce que je suis aux prises avec le pip de la documentation est si/comment les exigences de fichiers peuvent le faire sur leur propre ou si ils sont vraiment qu'un complément à l'aide d' install_requires.

Puis-je utiliser install_requires dans l'ensemble de mes bibliothèques de spécifier les dépendances et la version plages et ensuite seulement utiliser un fichier pour résoudre un conflit et/ou de les congeler pour une production de construire?

Faisons semblant de croire que je vis dans un monde imaginaire (je sais, je sais) et mon en amont les dépendances sont simples et la garantie de ne jamais de conflit ou de rupture de compatibilité descendante. Serais-je obligé d'utiliser un pip exigences fichier ou le laisser pip/setuptools/distribuer installer tout basé sur l' install_requires?

Il y a beaucoup de semblables questions ici, mais je ne pouvais pas trouver tout aussi basique que lors de l'utilisation de l'un ou de l'autre ou en les utilisant à la fois ensemble et en harmonie.

77voto

Ian Bicking Points 4571

Ma philosophie est qu' install_requires devrait indiquer un minimum de ce que vous avez besoin. Il peut inclure des exigences de version si vous savez que certaines versions ne fonctionnera pas; mais il ne devrait pas avoir de version si vous n'êtes pas sûr (par exemple, vous ne savez pas si une version future de la dépendance va briser votre bibliothèque ou pas).

Les exigences de fichiers sur l'autre main doit indiquer ce que vous savez n' travail, et peuvent inclure les dépendances optionnelles que vous recommander. Par exemple, vous pourriez utiliser SQLAlchemy, mais suggèrent MySQL, et donc de mettre les MySQLdb dans les exigences de fichier).

Donc, en résumé: install_requires est de garder les gens à l'écart des choses que vous ne savez pas, alors que les exigences de fichiers pour diriger les gens vers des choses que vous savez faire le travail. L'une des raisons à cela est qu' install_requires exigences sont toujours vérifié, et ne peut pas être désactivé sans changer le paquet de métadonnées. Donc vous ne pouvez pas facilement essayez une nouvelle combinaison. Les exigences de fichiers ne sont vérifiées au moment de l'installation.

27voto

rbp Points 512

voici ce que je mets dans mon setup.py:

 # this grabs the requirements from requirements.txt
REQUIREMENTS = [i.strip() for i in open("requirements.txt").readlines()]

setup(
    .....
    install_requires=REQUIREMENTS
)
 

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