208 votes

Fichier d'environnement pour l'exportation d'Anaconda

Comment puis-je créer un fichier d'environnement anaconda qui pourrait être utilisé sur d'autres ordinateurs ?

J'ai exporté mon environnement python anaconda vers YML en utilisant conda env export > environment.yml . L'export environment.yml contient cette ligne prefix: /home/superdev/miniconda3/envs/juicyenv qui correspond à l'emplacement de mon anaconda, qui sera différent sur d'autres ordinateurs.

11 votes

Je faisais juste quelques tests, et j'ai trouvé que le préfixe est ignoré... je ne sais pas pourquoi il est dans l'export env. Vous devriez être en mesure de faire conda env create -f environment.yml Juste en passant, d'après mon expérience, cela ne fonctionnera pas sur toutes les plateformes, parce que conda env listera de nombreuses dépendances telles que ` vs2015_runtime` si vous êtes sous Windows. Mais bien sûr, cela n'est pas disponible sur linux.

5 votes

Conda recommande en fait de créer le environment.yml à la main, vous pouvez donc le laisser de côté. stackoverflow.com/questions/39280638/

0 votes

Notez qu'il existe de bonnes instructions pour cela dans les docs maintenant ; je suppose que cette section n'existait pas lorsque ces réponses ont été écrites à l'origine.

279voto

Andrew Guy Points 3303

Je ne trouve rien dans le conda qui vous permettent d'exporter un fichier d'environnement sans l'option prefix: ... ligne. Cependant, comme Alex a fait remarquer dans les commentaires, conda ne semble pas se soucier de la ligne de préfixe lors de la création d'un environnement à partir d'un fichier.

En gardant cela à l'esprit, si vous voulez que l'autre utilisateur n'ait aucune connaissance de votre chemin d'installation par défaut, vous pouvez supprimer la ligne de préfixe avec grep avant d'écrire à environment.yml .

conda env export | grep -v "^prefix: " > environment.yml

Dans tous les cas, l'autre utilisateur s'exécute alors :

conda env create -f environment.yml

et l'environnement sera installé dans leur chemin d'environnement conda par défaut.

Si vous souhaitez spécifier un chemin d'installation différent de celui par défaut de votre système (non lié à 'prefix' dans le fichier environment.yml), il suffit d'utiliser la commande -p suivi du chemin d'accès requis.

conda env create -f environment.yml -p /home/user/anaconda3/envs/env_name

Notez que Conda recommande de créer le fichier environment.yml à la main, ce qui est particulièrement important si vous souhaitez partager votre environnement entre plusieurs plateformes (Windows/Linux/Mac). Dans ce cas, vous pouvez simplement laisser de côté l'option prefix ligne.

2 votes

...excellent !

0 votes

Je suppose que le prefix aide à créer de nouveaux environnements plus rapidement lorsqu'il est utilisé sur la même machine, mais je n'ai pas beaucoup de preuves pour cette affirmation. J'ai une fois exécuté sans le prefix et il a dû télécharger des paquets supplémentaires qu'il n'avait pas besoin de faire avant. Et pourtant, cela ne s'est produit qu'une seule fois, donc peut-être qu'après cela, ils ont été mis en cache au niveau du système ( ?) Donc, pas nécessaire pour le partage, mais peut-être souhaitable si vous l'utilisez pour vous-même.

72voto

javac Points 398

La manière la plus simple de sauvegarder les paquets d'un environnement pour les installer sur un autre ordinateur est la suivante :

$ conda list -e > req.txt

alors vous pouvez installer l'environnement en utilisant

$ conda create -n <environment-name> --file req.txt

si vous utilisez pip veuillez utiliser les commandes suivantes : référence https://pip.pypa.io/en/stable/reference/pip_freeze/

$ env1/bin/pip freeze > requirements.txt
$ env2/bin/pip install -r requirements.txt

4 votes

Sympa, mais cela ne semble pas fonctionner avec les paquets installés par pip, cependant.

1 votes

Merci je viens de mettre à jour en fonction de la référence donnée

0 votes

J'ai utilisé à la fois Anaconda Navigator et pip (depuis l'environnement) pour installer des choses. Que me conseillez-vous d'utiliser ? Les deux commandes ?

47voto

Ilyas Points 336
  • Linux

    conda env export --no-builds | grep -v "prefix" > environment.yml

  • Windows

    conda env export --no-builds | findstr -v "prefix" > environment.yml


Justification : Par défaut, conda env export comprend les informations de construction :

$ conda env export
...
dependencies:
  - backcall=0.1.0=py37_0
  - blas=1.0=mkl
  - boto=2.49.0=py_0
...

Vous pouvez au contraire exporter votre environnement sans info de construction :

$ conda env export --no-builds
...
dependencies:
  - backcall=0.1.0
  - blas=1.0
  - boto=2.49.0
...

Ce qui détache l'environnement de la version de Python et du système d'exploitation.

3 votes

Je suis d'accord pour dire qu'il s'agit d'une bonne réponse, mais pensez à ajouter quelques détails sur la raison pour laquelle l'exclusion des informations de construction est utile pour le transfert d'envs entre plateformes.

0 votes

J'ai fini par utiliser ceci, mais excellente idée @merv. C'est ce que j'ai fait.

3 votes

Malheureusement, cela ne fonctionne pas toujours lors de l'installation, de l'exportation et de la réinstallation sur des systèmes d'exploitation différents.

8voto

Savrige Points 2121
  1. Activez d'abord votre environnement Conda (celui que vous voulez exporter/sauvegarder).

    conda activate myEnv

  2. Exporter tous les paquets dans un fichier (myEnvBkp.txt)

    conda list --explicit > myEnvBkp.txt

  3. Restaurer/importer l'environnement :

    conda create --name myEnvRestored --file myEnvBkp.txt

7voto

Activez d'abord votre environnement Conda (ci-dessous, myenv est le nom supposé de l'environnement).

conda activate myenv

Ensuite, il vous suffit d'exécuter cette commande

conda env export > environment.yml

Notez que vous pouvez remplacer environment.yml par tout autre nom de fichier de votre choix.

0 votes

Simple et direct.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X