Comment spécifier des dépendances système externes à un package Python?
Lors de l'écriture d'un package Python, je sais spécifier d'autres packages Python requis dans le setup.pyfichier grâce au champ install_requiresfrom setuptools.setup.
Cependant, je ne sais pas comment spécifier des dépendances système externes qui ne sont PAS des packages Python, c'est-à-dire des commandes telles que gitou cmake(exemples) que mon package pourrait appeler via subprocess.callou subprocess.Popen?
Dois-je vérifier manuellement la disponibilité des commandes dans mon setup.pyfichier, ou existe-t-il un moyen sophistiqué de spécifier la configuration système requise?
Edit: Je veux juste pouvoir vérifier si les outils externes sont disponibles, et sinon inviter l'utilisateur à les installer (par lui-même). Je ne souhaite pas gérer l'installation d'outils externes lors de l'installation du package.
Résumé des contributions: il semble que cela setuptoolsn'a pas de support pour cela, et il serait plus sûr de faire la vérification à l'exécution (cf commentaires et réponses).
Réponses
Ma recommandation serait de vérifier la présence de ces dépendances externes non pas au moment de l' installation, mais au moment de l' exécution . Soit au début de chaque course, soit peut-être à la première course.
Il est vrai que vous pouvez l'ajouter à votre setup.py, mais le setup.pyn'est pas toujours exécuté au moment de l'installation: par exemple, si votre projet est packagé sous forme de roue, il ne contient même pas du tout le setup.pyfichier. Et même si vous ne distribuez pas votre projet sous forme de roue, si je ne me trompe pas, pip a quand même tendance à construire une roue localement et à la réutiliser pour les installations ultérieures.
Donc, bien qu'il soit possible de faire de telles vérifications dans le cadre du script de configuration au moment de l'installation (à condition que vous puissiez garantir la présence et l'exécution de setup.py), je dirais que l'exécution est un pari plus sûr.