Existe-t-il un moyen de spécifier des installations conditionnelles dans un fichier pip requirements.txt basé sur la valeur d'une variable d'environnement?pip require.txt conditionnels ou marqueurs d'environnement basés sur des variables d'environnement
J'ai été capable de contrôler la plupart de ce dont j'ai besoin avec des marqueurs d'environnement, mais tous les marqueurs que je connais ne fonctionnent qu'avec des valeurs spécifiques qui sont essentiellement prédéfinies par python. Par exemple, je veux être en mesure de contrôler l'installation du paquet pour RHEL 5.3 par rapport à RHEL 6.3 par rapport à RHEL 6.6, etc. Également basé sur d'autres critères.
Ce serait parfait si je pouvais spécifier dans le fichier results.txt une variable d'environnement qui serait vérifiée par rapport à une valeur que j'avais définie avant l'exécution de pip. Cela semble être une fonctionnalité souhaitable et simple. Je n'ai pas eu beaucoup de chance jusqu'ici pour trouver des discussions complètes sur les marqueurs d'environnement, donc j'espère avoir manqué un peu d'information clé :-)
Merci beaucoup.
Merci pour les commentaires mipadi. J'avais peur de ça. Puisque, si je comprends bien, les marqueurs d'environnement pip sont juste des équivalents pour associer des fonctionnalités en python (comme 'platform_system' est vraiment' platform.system() 'en python,) j'espérais qu'il y avait un moyen d'avoir un marqueur équivalent à quelque chose comme 'os.environ.get ('MYVARIABLE')'. La difficulté que j'ai est qu'il y a plusieurs dimensions à mes critères d'exigence, donc l'utilisation de plusieurs fichiers d'exigences devient un peu salissante à maintenir. L'utilisation des fichiers de contraintes est une bonne idée. Je vais essayer de réduire au minimum la complexité de cette façon. – ghoff
L'utilisation de différents fichiers de contraintes pourrait contourner mon problème assez facilement ** sauf ** que je ne peux pas trouver un moyen de rendre un fichier de contraintes complètement interdire un paquet. Y a-t-il un moyen? J'ai essayé de contourner ce problème en spécifiant une version inexistante (par exemple 'six <= 0.1') mais ensuite en pipant les erreurs car il ne trouve pas de version acceptable à installer. Y a-t-il un moyen de dire à pip de ne pas faire d'erreur, ou d'avertir plutôt que d'erreur? – ghoff
J'ai également essayé d'utiliser un marqueur d'environnement qui a la valeur false (par exemple 'six; sys_platform == 'win32'' dans un environnement Linux). Mais au lieu de contraindre l'installation du paquet, pip contraint (ignore) cette ligne du fichier de contraintes et installe la dernière version du paquet (car elle n'est pas contrainte dans le fichier requirements.txt). – ghoff