Anaconda 내보내기 환경 파일


129

다른 컴퓨터에서 사용할 수있는 아나콘다 환경 파일을 어떻게 만들 수 있습니까?

내 아나콘다 파이썬 환경을 conda env export > environment.yml. 내 보낸 파일 environment.yml에는 prefix: /home/superdev/miniconda3/envs/juicyenv내 아나콘다의 위치에 매핑되는 이 라인이 포함되어 있으며 다른 PC에서는 다릅니다.


7
나는 단지 몇 가지 테스트를하고 있었고 접두사가 무시된다는 것을 알았는데 ... 왜 env 내보내기에 있는지 확실하지 않습니다. 당신은 할 수 있어야 conda env create -f environment.yml Windows에서 경우 CONDA의 ENV는`vs2015_runtime` 많은 의존성을 나열합니다 때문에 내 경험이, 플랫폼에서 작동하지 않을, 여담으로 그냥합니다. 그러나 물론 그것은 리눅스에서 사용할 수 없습니다.
알렉스 G 라이스

4
CONDA 실제로 만드는 것이 좋습니다 environment.yml당신이 그것을 떠날 수 있도록, 손으로 파일을 - 볼 stackoverflow.com/questions/39280638/...
브라이언 화상

답변:


178

conda사양에서 prefix: ...라인 없이 환경 파일을 내보낼 수 있는 항목을 찾을 수 없습니다 . 그러나 Alex 가 주석에서 지적했듯이 conda는 파일에서 환경을 만들 때 접두사 줄에 신경 쓰지 않는 것 같습니다.

이를 염두에두고 다른 사용자가 기본 설치 경로를 알지 못하도록하려면에 grep쓰기 전에 접두사 줄을 제거 할 수 있습니다 environment.yml.

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

어느 쪽이든 다른 사용자는 다음을 실행합니다.

conda env create -f environment.yml

환경은 기본 conda 환경 경로에 설치됩니다.

시스템의 기본값과 다른 설치 경로를 지정하려면 (environment.yml의 '접두사'와 관련이 없음) -p플래그 다음에 필수 경로를 사용하면 됩니다.

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

Conda environment.yml는 수동 생성을 권장하며 , 이는 플랫폼 (Windows / Linux / Mac)간에 환경을 공유하려는 경우 특히 중요합니다. 이 경우 prefix줄을 생략 할 수 있습니다 .


1
... 좋아요! 👍
Ahi Tuna

44

다른 컴퓨터에 설치할 환경에서 패키지를 저장하는 가장 쉬운 방법은 다음과 같습니다.

$ conda list -e > req.txt

그런 다음 사용하여 환경을 설치할 수 있습니다.

$ conda create -n new environment --file req.txt

을 사용 pip하는 경우 다음 명령을 사용하십시오. 참조 https://pip.pypa.io/en/stable/reference/pip_freeze/

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

좋지만 pip 설치 패키지에서는 작동하지 않는 것 같습니다.
Little Bobby Tables

1
감사합니다 나는 단지 업데이트 주어진 기준에 따라
javac의

Anaconda Navigator와 pip (환경 내에서)를 모두 사용하여 설치했습니다. 무엇을 사용하는 것이 좋을까요? 두 명령?
DA

Anaconda 환경에서 conda 명령을 사용하는 것이 더 낫다고 생각합니다. 필요한 경우 pip를 사용할 수도 있습니다
javac

9
  • 리눅스

    conda env export --no-builds | grep -v "접두사"> environment.yml

  • 윈도우

    conda env export --no-builds | findstr -v "접두사"> environment.yml


근거 : 기본적으로 conda env export빌드 정보를 포함합니다.

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

대신 빌드 정보없이 환경을 내보낼 수 있습니다.

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

Python 버전 및 OS에서 환경을 통합합니다.


1
이것이 좋은 대답이라는 데 동의하지만 빌드 정보를 제외하는 것이 플랫폼간에 환경을 전송하는 데 유용한 이유에 대한 세부 정보를 추가하는 것을 고려해보십시오.
merv

이것을 사용했지만 @merv는 좋은 아이디어입니다. 그랬어.
François Leblanc

불행히도 다른 OS에 내보내기 및 재설치를 설치할 때 항상 작동하지는 않습니다.
Sören

2

패키지를 문자열 형식으로 만 내보내는 것이 전체 conda환경을 내보내는 것보다 이식성이 더 높다는 것을 알았습니다 . 이전 답변에서 이미 제안했듯이 :

$ conda list -e > requirements.txt

그러나 requirements.txt여기에는 운영 체제간에 이식 할 수없는 빌드 번호가 포함됩니다 (예 : Mac과 사이) Ubuntu. 에는 conda env export옵션이 --no-builds있지만에는 포함되지 않으므로 conda list -e다음 명령을 실행하여 빌드 번호를 제거 할 수 있습니다.

$ sed -i -E "s/^(.*\=.*)(\=.*)/\1/" requirements.txt 

그리고 다른 컴퓨터에서 환경을 다시 만듭니다.

conda create -n recreated_env --file requirements.txt 

sed명령은 꽤 잘 작동했습니다. 패치 버전을 삭제해야했습니다. 그래서 major.minor.patchmajor.minor그것은했다. 더 낮은 패치 번호는 메인 저장소에 의해 삭제되었습니다.
Lucas

1
  1. 먼저 conda 환경을 활성화하십시오 (내보내기 / 백업하려는 환경).
conda activate myEnv
  1. 모든 패키지를 파일 (myEnvBkp.txt)로 내보내기
conda list --explicit > myEnvBkp.txt
  1. 환경 복원 / 가져 오기 :
conda create --name myEnvRestored --file myEnvBkp.txt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.