2015-09-01 1 views
2

J'ai écrit un script Apache Spark python, et pour des raisons de compatibilité, j'ai besoin de passer une version spécifique de scikit-learn lorsque je soumets le job Spark au cluster. Le problème est que je ne suis pas sûr d'où je peux obtenir une copie du binaire/exécutable scikit-learn dont j'ai besoin. Je ne pense pas que ce soit aussi simple que de télécharger la source de scikit-learn et de me compiler parce que j'ai entendu dire que scikit-learn a beaucoup de dépendances, et je ne suis pas sûr des dépendances dont j'ai besoin pour la version dont j'ai besoin. Je pensais pouvoir créer un environnement Conda avec la version spécifique de scikit-learn dont j'avais besoin pour que Conda puisse faire toutes les compilations pour moi, mais je ne sais pas où Conda enregistre les bibliothèques qu'elle construit. J'ai essayé de vérifier sous le dossier venv par défaut, mais je n'ai rien vu de prometteur.Où Conda enregistre-t-il les bibliothèques compilées associées aux environnements Conda?

Répondre

2

Conda prend en charge les dépendances. Il suffit de passer la version à Conda:

$ conda install scikit-learn=0.16.1 

Si vous voulez la version exacte de chaque paquet, vous pouvez effectuer les opérations suivantes:

$ conda list -e > requirements.txt 

Vous créez ensuite un nouvel environnement comme suit:

$ conda create -n my_environment --file requirements.txt 
+0

Je suis en mesure d'installer les versions correctes de mes dépendances dans Conda sans problème, le problème est que je ne sais pas où les fichiers correspondant à ces dépendances sont stockées. J'espérais sortir les fichiers de dépendance de Conda afin de pouvoir les utiliser dans un endroit totalement différent (par exemple sur un cluster Hadoop où je n'aurai pas accès directement à mon environnement Conda). Je voudrais envoyer les fichiers de dépendance Conda avec l'un de mes travaux Hadoop – user554481

+0

Dans tous les cas, je ne suis pas sûr si vous seriez en mesure de déplacer de manière fiable les fichiers binaires installés par conda à un système complètement différent. Je ne comprends pas les détails moi-même, mais c'est peut-être utile: http://conda.pydata.org/docs/building/meta-yaml.html#making-packages-relocatable – faph

0

Les packages sont stockés dans le dossier (prefix)/pkgs avant d'être extraits. Les fichiers extraits peuvent vivre beaucoup d'endroits dans le préfixe - juste ce que le paquet spécifie. Vous pouvez envoyer les fichiers tarball autour du paquet si nécessaire, et les installer directement (les spécifier en tant qu'arguments conda install). Cependant, il est vraiment plus agréable de faire ce qu'Alexandre a suggéré ici: créer un fichier d'exigences qui épingle les versions. Vous devriez également regarder en utilisant conda-env. Il donne plus de flexibilité en termes d'obtention de paquets d'anaconda.org que le fichier des exigences simples obtenu à partir de liste de conda.

Docs sur Conda-env: http://conda.pydata.org/docs/using/envs.html