web-dev-qa-db-de.com

So teilen Sie Conda-Umgebungen plattformübergreifend

Die Conda-Dokumente unter http://conda.pydata.org/docs/using/envs.html erläutern, wie Sie Umgebungen mit anderen Personen gemeinsam nutzen können.

Die Dokumente sagen uns jedoch, dass dies nicht plattformübergreifend ist:

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.

Gibt es eine gute Methode, eine Conda-Umgebung auf einer Plattform (z. B. CentOS) auf einer anderen Plattform (z. B. Windows) gemeinsam zu nutzen und neu zu erstellen?

35
user3731622

Antworten

Diese Antwort wird mit der Annahme gegeben, dass Sie sicherstellen möchten, dass Dieselben Versionen der Pakete, die Sie normalerweise interessieren, auf verschiedenen Plattformen und __alle Pakete im gesamten Abhängigkeitsbaum. Wenn Sie versuchen, exakt die gleiche Version aller Pakete in Ihrem gesamten Abhängigkeitsbaum zu installieren, die eine hohe Wahrscheinlichkeit von Fehlern aufweist, da einige Condapakete unterschiedliche Abhängigkeiten für osx/win/linux haben. Zum Beispiel: Das Rezept für Otrobopt Installiert verschiedene Pakete unter win vs. osx/linux. Die Umgebungsliste Wäre also anders.

Empfehlung: Erstellen Sie manuell eine environment.yaml -Datei und geben Sie nur die Abhängigkeiten an, die Sie interessieren. Lassen Sie den Conda Solver den Rest erledigen Wahrscheinlich ist es erwähnenswert, dass conda-env (das Werkzeug, das Sie zum Verwalten von Conda-Umgebungen verwenden . "

Dann würden Sie einfach conda env create --file environment.yml tun

Schauen Sie sich die Readme for conda-env an.

Sie können ganz einfach sein:

name: basic_analysis
dependencies:
  - numpy
  - pandas

Oder komplexer, wenn Sie Abhängigkeiten anhängen und anaconda.org-Kanäle in Installation angeben:

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

In beiden Fällen können Sie eine Umgebung mit conda env create --file environment.yaml erstellen.

Wenn Sie einen komplexeren Anwendungsfall oder weitere Fragen haben, aktualisieren Sie die ursprüngliche -Frage und ich werde sehen, ob ich Ihnen etwas mehr helfen kann.

47
Eric Dill

conda-env export sollte verwendet werden, um Ihre komplette Umgebung in die Datei my_env.yml zu exportieren.

Überprüfen Sie die funktionierende Lösung, um unter OS X nur Präfix zu erhalten, anstatt vollständige Abhängigkeit einschließlich Pip zu erhalten.

Schritt 1: Deaktivieren Sie die Umgebung, falls aktiviert. Andernfalls wird die Yml-Datei nur mit dem Präfix erstellt.

Schritt 2: Führen Sie den folgenden Befehl aus, um den Conda-env-Export zu exportieren. -N mein_env> my_env.ymlit exportiert alle erforderlichen Abhängigkeiten, Kanäle und Pip-Installationen in einer Yml-Datei, die importiert werden kann, um sie mit anderen zu teilen.

Schritt 3: Führen Sie den folgenden Befehl aus, um Conda-env zu importieren. Create -n my_env -f = my_env.ymlit erstellt die genaue Umgebung wie beim Freigeben der anderen Maschine.

0

Wenn Sie an einer Lösung zur Verwaltung einer einzigen Umgebungsdatei interessiert sind, die unter Linux, Mac OS und Windows verwendet werden kann, besuchen Sie das conda-devenv-Tool unter https://github.com/ESSS/conda-devenv .

0
Allan