2015-09-30 1 views
1

J'essaie d'utiliser Conda pour configurer les environnements de test de génération & pour un projet (LensKit) et d'avoir des dépendances spécifiques à la plate-forme. Plus précisément, sous Linux, j'ai besoin de libgfortran et openssl, mais pas de Windows.Existe-t-il un moyen d'avoir des dépendances spécifiques aux plates-formes dans environment.yml?

Existe-t-il un moyen que je peux indiquer, dans environment.yml, que j'ai besoin de libgfortran mais seulement sur les plates-formes Linux 32 et 64 bits? Ou dois-je avoir des définitions d'environnement distinctes pour couvrir ce cas?

L'autre solution potentielle que je vois est de créer un paquet factice et de le publier à http://anaconda.org qui dépend juste des paquets de base requis pour chaque plate-forme, et exige ce paquet dans environment.yml.

Répondre

2

Les "paquets factices" sont en fait appelés "metapackages". Voir http://conda.pydata.org/docs/building/meta-pkg.html. Cela semble une bonne option.

Alternativement, pourriez-vous construire un paquet conda de votre projet? Dans meta.yml de la recette conda, vous pouvez utiliser des sélecteurs pour différentes plates-formes. http://conda.pydata.org/docs/building/meta-yaml.html#preprocessing-selectors

+1

Merci. Ce serait génial si les sélecteurs de prétraitement fonctionnaient aussi dans 'environment.yml'. –

+0

Je pense que 'environment.yml' est purement conçu comme un vidage exact d'un environnement. Les docs disent explicitement qu'il peut ne pas fonctionner multiplate-forme. Le 'meta.yml' est vraiment sur l'installation des exigences exactes. Nous devons probablement oublier pip et c'est une façon d'installer en utilisant un fichier de conditions ... – faph