web-dev-qa-db-fra.com

Comment partager des environnements Conda sur plusieurs plates-formes

Les conda docs sur http://conda.pydata.org/docs/using/envs.html expliquent comment partager des environnements avec d'autres personnes.

Cependant, les docs nous disent que ce n'est pas multiplateforme:

NOTE: These explicit spec files are not usually cross platform, and      
therefore have a comment at the top such as # platform: osx-64 showing the  
platform where they were created. This platform is the one where this spec
file is known to work. On other platforms, the packages specified might not
be available or dependencies might be missing for some of the key packages
already in the spec.

NOTE: Conda does not check architecture or dependencies when installing 
from an explicit specification file. To ensure the packages work correctly,
be sure that the file was created from a working environment and that it is 
used on the same architecture, operating system and platform, such as linux-
64 or osx-64.

Existe-t-il une bonne méthode pour partager et recréer un environnement conda sur une plate-forme (par exemple, CentOS) sur une autre (par exemple, Windows)?

35
user3731622

Réponse

Cette réponse est donnée en partant du principe que vous voulez vous assurer que Les mêmes versions des paquetages que vous aimez sont sur des plates-formes différentes et que vous ne vous souciez pas des mêmes versions deall packages dans l’ensemble de l’arbre des dépendances. Si vous essayez d'installer la même version de tous les paquetages dans votre arborescence de dépendances avec une probabilité élevée d'échec de Puisque certains paquetages conda ont des dépendances différentes pour osx/win/linux. Par exemple, la recette de Otrobopt Installera différents packages sur win vs osx/linux, de sorte que la liste d'environnement Serait différente.

Recommandation: créez manuellement un fichier environment.yaml et spécifiez ou épinglez Uniquement les dépendances dont vous vous souciez. Laissez le résolveur de conda faire le reste . Il est probablement intéressant de noter que conda-env (l'outil que vous utilisez pour gérer les environnements conda ) Vous recommande explicitement de "Créez toujours votre fichier Environment.yml à la main. . "

Ensuite, vous feriez simplement conda env create --file environment.yml

Jetez un coup d’œil au readme pour conda-env .

Ils peuvent être assez simples:

name: basic_analysis
dependencies:
  - numpy
  - pandas

Ou plus complexe où vous épinglez des dépendances et spécifiez des canaux anaconda.org pour installer À partir de:

name: stats-web
channels:
  - javascript
dependencies:
  - python=3.4   # or 2.7 if you are feeling nostalgic
  - bokeh=0.9.2
  - numpy=1.9.*
  - nodejs=0.10.*
  - flask
  - pip:
    - Flask-Testing

Dans les deux cas, vous pouvez créer un environnement avec conda env create --file environment.yaml

Si vous avez un cas d'utilisation plus complexe ou d'autres questions, mettez à jour la question Originale et je verrai si je peux vous aider un peu plus.

47
Eric Dill

l'exportation conda-env doit être utilisée pour exporter votre environnement complet dans un fichier nommé my_env.yml.

Vérifiez que la solution de travail n’obtient que le préfixe sous OS X au lieu d’une dépendance complète, y compris pip.

Étape 1: désactivation de l'environnement si activé. sinon, il créera un fichier yml avec seulement un préfixe.

Étape 2: exécutez la commande ci-dessous pour exporter Conda-env export -n my_env> my_env.ymlit exportera toutes les dépendances requises, les canaux et les installations pip dans un fichier yml pouvant être partagé avec d'autres.

Étape 3: exécutez la commande ci-dessous pour importer Conda-env. Create -n my_env -f = my_env.ymlit créera l'environnement exact tel qu'il est sur le partage de la machine.

0
Irurik Soft Labs

Si vous êtes intéressé par une solution permettant de gérer un fichier d’environnement unique utilisable sous Linux, macOS et Windows, veuillez consulter l’outil conda-devenv à l’adresse https://github.com/ESSS/conda-devenv .

0
Allan