Wie kann eine bereits vorhandene Conda-Umgebung mit einer anderen .yml-Datei aktualisiert werden? Dies ist äußerst hilfreich, wenn Sie an Projekten arbeiten, die mehrere Anforderungsdateien enthalten, z. B. base.yml, local.yml, production.yml
usw.
Im Folgenden finden Sie beispielsweise eine base.yml
Datei mit den Paketen conda-forge, conda und pip:
base.yml
name: myenv
channels:
- conda-forge
dependencies:
- django=1.10.5
- pip:
- django-crispy-forms==1.6.1
Die eigentliche Umgebung wird erstellt mit :
conda env create -f base.yml
.
Später müssen zusätzliche Pakete hinzugefügt werden base.yml
. Eine andere Datei local.yml
muss beispielsweise diese Updates importieren.
Frühere Versuche, dies zu erreichen, umfassen:
Erstellen einer local.yml
Datei mit einer Importdefinition:
channels:
dependencies:
- pip:
- boto3==1.4.4
imports:
- requirements/base.
Führen Sie dann den folgenden Befehl aus :
conda install -f local.yml
.
Das funktioniert nicht. Irgendwelche Gedanken?
Antworten:
Versuchen Sie es mit conda env update :
Oder ohne die Umgebung aktivieren zu müssen (danke @NumesSanguis):
quelle
-f
undfile.yml
. Durch Entfernen des Gleichheitszeichens wird die Tab-Vervollständigung des.yml
Dateinamens ausgeführt.--name env_name
, umname: foo
Tags in zu ignorierenlocal.yml
. Verhindert auch die Notwendigkeit, zuerst myenv zu aktivieren. Vollständiger Befehl:conda env update --name env_name --file local.yml
Von: stackoverflow.com/a/45525593/3399066 's KommentarDie vorgeschlagene Antwort ist teilweise richtig. Sie müssen die Option --prune hinzufügen, um auch Pakete zu deinstallieren, die aus der Datei environment.yml entfernt wurden. Richtiger Befehl:
quelle
Die Antwort von alkamid ist in der richtigen Zeile, aber ich habe festgestellt, dass Conda keine neuen Abhängigkeiten installiert, wenn die Umgebung bereits aktiv ist. Durch Deaktivieren der Umgebung wird zunächst Folgendes behoben:
quelle
-n <environment name>
, aber standardmäßig scheint es mit der erwarteten Umgebung zu funktionieren (möglicherweise die zuletzt aktive oder nur eine Standardumgebung)