Gist: Quelle est la meilleure façon de détecter dans setup.py que nous sommes déclenchés par pip install package
?détecter pip dans setup.py
Contexte: J'ai un paquet (bindings pour une bibliothèque C), pour lequel je fournis des oeufs qui incluent la bibliothèque elle-même. Dans mon readme/docs, je note que ce paquet est facile à installer sur certaines plates-formes. Lors de la construction à partir de la source (par exemple avec pip), la bibliothèque elle-même est une dépendance de construction. Le problème est que j'ai un peu régulièrement confondu les utilisateurs qui croient à tort que pip est un remplacement complet pour easy_install, et s'attendre à pip install package
de travailler sur des systèmes sans la bibliothèque, ou même sans compilateur, où l'oeuf est ce qu'ils veulent vraiment.
Je voudrais détecter que la construction a été déclenchée par pip, donc je peux fournir un message amical "pip! = Easy_install" s'il échoue en raison de l'absence de la bibliothèque. Il n'a pas besoin d'être parfait, il suffit d'attraper les cas les plus courants de pip install package
. Lors de l'inspection, il ne semble pas comme il y a une façon de faire particulièrement robuste, et le meilleur que je suis venu avec est:
probably_using_pip = '--single-version-externally-managed' in sys.argv
est-il un moyen de mieux (ou mieux encore, officiel) pour détecter pip de setup.py?
Pourquoi le message d'erreur doit-il être différent de celui exécuté lors de l'exécution de "setup.py install" lorsque la bibliothèque n'est pas présente? – joeforker
Lorsque vous exécutez 'setup.py install', vous construisez certainement à partir de la source. Lorsque vous lancez 'pip install', les gens peuvent s'attendre à des binaires sans les obtenir (les utilisateurs ne comprennent vraiment pas les différences entre pip et easy_install). Cette question n'est plus pertinente dans mon cas particulier, car le pip 1.5 supporte les roues par défaut. – minrk
Un peu plus de contexte: au moment de la demande (il y a deux ans), mon paquet était fréquemment installé sur des machines qui n'avaient pas de compilateur, et pip ne supportait aucun format binaire. easy_install a bien fonctionné, mais pip ne parviendrait pas à compiler. Pour cette raison, je voulais informer les personnes dont l'installation du 'pip 'a échoué que easy_install pourrait être préférable. – minrk