.yml 파일로 기존 Conda 환경을 업데이트하는 방법


139

기존 conda 환경을 다른 .yml 파일로 어떻게 업데이트 할 수 있습니까? 이것은 여러 요구 사항 파일이있는 프로젝트에서 작업 할 때 매우 유용합니다 base.yml, local.yml, production.yml.

예를 들어, 다음은 base.ymlconda-forge, conda 및 pip 패키지 가있는 파일입니다.

base.yml

name: myenv
channels:
  - conda-forge
dependencies:
  - django=1.10.5
  - pip:
    - django-crispy-forms==1.6.1

실제 환경은 다음으로 생성됩니다 conda env create -f base.yml.

나중에 추가 패키지를에 추가해야 base.yml합니다. 예를 들어 다른 파일은 local.yml이러한 업데이트를 가져와야합니다.

이를 달성하기위한 이전 시도는 다음과 같습니다.

local.yml가져 오기 정의 로 파일 만들기 :

channels:

dependencies:
  - pip:
    - boto3==1.4.4
imports:
  - requirements/base. 

그런 다음 다음 명령을 실행하십시오 conda install -f local.yml..

작동하지 않습니다. 이견있는 사람?


현재 활성화 된 환경을 업데이트 할 수 있습니까 ?? 방금 시도했지만 업데이트는 yml 파일에 이름이 지정된 환경으로 이동했습니다.
Sören

답변:


203

conda env update를 사용해보십시오 .

conda activate myenv
conda env update --file local.yml

또는 환경을 활성화 할 필요없이 (@NumesSanguis에게 감사드립니다) :

conda env update --name myenv --file local.yml

12
당신은이 사이에 등호 필요하지 않습니다 -ffile.yml. 등호 기호를 제거하면 .yml파일 이름 에서 탭 완성이 작동합니다 .
BallpointBen

4
의 태그 --name env_name를 무시하려면 추가하십시오 . 또한 myenv를 먼저 활성화 할 필요가 없습니다. 전체 명령 에서 : stackoverflow.com/a/45525593/3399066 의 코멘트name: foolocal.ymlconda env update --name env_name --file local.yml
NumesSanguis

1
가장 최근의 conda 버전에서는 "source activate myenv"대신 "conda activate myenv"를 사용한다고 생각합니다
teter123f

32

제안 된 답변은 부분적으로 정확합니다. environment.yml에서 제거 된 패키지도 제거 하려면 --prune 옵션 을 추가해야 합니다. 올바른 명령 :

conda env update -f local.yml --prune

--prune 플래그 조차도 pip 설치된 종속성을 제거하기에 충분하지 않습니다 ...
Jean Paul

진실. 나는 그것이 conda 의존성을 제거 할 것이라고 생각하지만 pip 아래에 나열된 것은 아닙니다
Blink

22

alkamid의 대답은 올바른 줄에 있지만 환경이 이미 활성화되어 있으면 Conda가 새 종속성을 설치하지 못하는 것으로 나타났습니다. 환경을 비활성화하면 먼저 다음이 해결됩니다.

source deactivate;
conda env update -f whatever.yml;
source activate my_environment_name; # Must be AFTER the conda env update line!

4
conda는 현재 활성 상태가 아닌 경우 업데이트 할 환경을 어떻게 알 수 있습니까?
Thomas Fauskanger

5
@ThomasFauskanger로 명시 적으로 지정할 수 -n <environment name>있지만 기본적으로 예상 환경에서 작동하는 것 같습니다 (가장 최근에 활성화 된 환경이거나 기본 환경 선택
Dave

18
@ThomasFauskanger conda에서 내 보낸 환경의 이름은 YAML 파일에 지정됩니다.
Thomas

이 질문의 오래된 요점은 yaml 파일에 지정된 환경으로 다른 환경을 업데이트하는 것이라고 생각했습니다.
Giacomo

1
YAML 파일 @ThomasFauskanger 환경 이름을 포함
압둘 라흐만 Bres
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.