Anaconda를 사용하다 보면, 동일 환경을 다른 사람 또는 다른 PC에서 사용하기 위해 복사해야 하는 경우가 있다.
이때, 하나하나 패키지를 설치할 필요 없이 yml 파일로 내보내고, 이를 통해 쉽게 환경을 복사할 수 있는 방법이 있다.
- 다른 PC 환경에 yml 파일을 통해 가상환경 내보내기
- 같은 PC 환경에 직접 가상환경 복사하기
- 추가적으로 prefix 없이 깔끔하게 내보내는 방법 제공
(필자는 Anaconda를 상시 사용 중이라 가상환경을 내보내는 경우가 많았으나,
항상 prefix가 붙어서 그대로 다른 PC에서 설치할 때 에러가 나는 경우가 너무 많았다.
마지막 prefix 부분은 정말 유용하다고 본다.)
[yml 파일을 통해 가상환경 내보내기]
1. Export할 가상환경 활성화
conda activate <가상환경 명>
- Anaconda Prompt 또는 Anaconda가 활성화 된 상태에서, 특정 가상환경을 Activate 시킨다.
별도의 가상환경을 사용하지 않는 경우, 기본적으로 (base) 로 표시된다.
2. Conda 가상환경을 Yml 파일로 export
conda env export > environment.yml
- 해당 명령어를 사용하여 현재 활성화된 가상환경의 환경 정보를 내보낸다.
- 사용중인 conda 채널, 가상환경 이름, conda 및 pip로 설치한 패키지명 및 버전명이 표시된다.
yml 파일은 내보낸 폴더의 위치에서 확인할 수 있다. 메모장 또는 notepad++ 를 통해 열기를 추천한다.
- 추가로, 내보냈을 때 하단에 표시되는 prefix는 설치 디렉터리를 나타내므로, 새로운 환경에서 다른 디렉터리를 사용하는 경우 해당 prefix는 삭제하도록 한다.
3. yml 파일로 새로운 Conda 가상환경 생성
conda env create -f environment.yml
- 해당 명령어를 사용하여 새로 Anaconda 가상환경을 복사하고 yml 파일에 들어간 패키지 및 버전 정보에 맞춰 가상환경을 생성한다.
-f 옵션: 파일 지정 (만약 현재 command를 날리는 위치가 yml 파일이 위치한 곳이 아니라면, 위의 명령어에서 직접 yml 파일의 디렉터리 경로까지 명시하여 파일 위치를 지정할 수 있다.)
가상환경 자체를 통째로 복사한 것은 아니기 때문에, 패키지 설치 시 일정 시간이 소요된다.
설치 시 종속성 충돌 등 다양한 문제가 발생할 수 있으므로, 중간중간 트러블슈팅을 진행하며 설치한다.
특히나 Linux Anaconda에서 사용 중인 가상환경을 Windows로 설치하는 경우,
세부 Conda 패키지 중 Linux / Windows에서만 지원하는 패키지가 존재하기 때문에 해당 패키지는 OS에 맞게 수정하거나 제거하는 등 일부 수정하는 과정이 필요하다.
4. Anaconda yml, yaml 패키지 뒤에 붙는 prefix 없이 깔끔하게 내보내기
conda env export —no-builds > environment_clean.yml
- 해당 명령어를 사용하여 가상환경 yml 파일을 좀더 깔끔하게 내보낼 수 있다.
--no-builds 옵션 : prefix 없이 깔끔하게 패키지와 버전만 내보낸다.
왼쪽이 --no-builds 옵션을 통해 패키지와 버전만 내보낸, prefix 없는 깔끔한 버전이고,
오른쪽이 일반적으로 내보낸 prefix가 존재하는 버전이다. prefix가 붙어 있는 경우 굉장히... 설치 시에 오류가 많이 발생한다.
따라서 4번의 해당 옵션을 꼭 추가하는 것을 권장한다.
[같은 PC에서 가상환경 복사하기]
conda create -n new_env --clone exist_env
- 해당 명령어를 사용하여 같은 환경 내에 있는 <exist_env> 가상환경을 <new_env> 가상환경 이름으로 복사할 수 있는 명령어다.
해당 부분은 기존에 사용중인 가상환경 명과 새로 생성할 가상환경 명으로 바꾸어 사용하면 된다.
- new_env : 새로 생성할 가상환경 이름
- exist_env : 사용 중인 가상환경 이름 (복사할 가상환경)