Jak można zaktualizować istniejące środowisko Conda innym plikiem .yml. Jest to niezwykle pomocne podczas pracy nad projektami, które mają wiele plików wymagań, np. base.yml, local.yml, production.yml
Itp.
Na przykład poniżej znajduje się base.yml
plik zawierający pakiety conda-forge, conda i pip:
base.yml
name: myenv
channels:
- conda-forge
dependencies:
- django=1.10.5
- pip:
- django-crispy-forms==1.6.1
Rzeczywista środowisko jest tworzony z:
conda env create -f base.yml
.
Później należy dodać dodatkowe pakiety base.yml
. Powiedzmy, że inny plik local.yml
musi zaimportować te aktualizacje.
Poprzednie próby osiągnięcia tego obejmują:
tworzenie local.yml
pliku z definicją importu:
channels:
dependencies:
- pip:
- boto3==1.4.4
imports:
- requirements/base.
A następnie uruchomić komendę:
conda install -f local.yml
.
To nie działa. jakieś pomysły?
Odpowiedzi:
Spróbuj użyć aktualizacji conda env :
Lub bez konieczności aktywacji środowiska (dzięki @NumesSanguis):
źródło
-f
afile.yml
. Usunięcie znaku równości spowoduje, że uzupełnianie tabulatorów będzie działać na.yml
nazwie pliku.--name env_name
aby zignorować dowolnyname: foo
tag wlocal.yml
. Zapobiega również konieczności uprzedniej aktywacji myenv. Pełne polecenie:conda env update --name env_name --file local.yml
Od: komentarz stackoverflow.com/a/45525593/3399066Sugerowana odpowiedź jest częściowo poprawna. Będziesz musiał dodać opcję --prune , aby odinstalować również pakiety, które zostały usunięte z pliku environment.yml. Prawidłowe polecenie:
źródło
Odpowiedź alkamidu jest słuszna, ale odkryłem, że Conda nie instaluje nowych zależności, jeśli środowisko jest już aktywne. Dezaktywacja środowiska najpierw rozwiązuje ten problem:
źródło
-n <environment name>
, ale domyślnie wydaje się, że działa z oczekiwanym środowiskiem (może ostatnio aktywnym lub po prostu domyślnym wyborem środowiska)