Utilities

[Anaconda] 아나콘다 환경 export, import, clone 하기

Jonghyuk Baek 2022. 3. 1. 22:55

저 뱀을 복사하자.

Introduction

기존에 사용하고 있던 아나콘다 가상환경을 다른 머신에서도 사용하고 싶다던가, 혹은 기존의 가상환경 위에서 새 패키지를 테스트 해 보고 싶은데 디펜던시가 꼬일 가능성이 커 안전하게 별도의 동일한 가상환경을 만들어 쓰고 싶을 때가 있다.

 

패키지가 몇 개 안 깔려 있는 가상환경인 경우엔 그냥 별도의 가상환경을 똑같이 만들고 필요한 패키지들을 다시 설치해 주면 되지만, 이 작업을 여러 번 수행해야 한다던가 필요한 패키지의 수가 많은 경우 이런 방식에는 한계가 있다.

 

다행히도 아나콘다에서는 이런 작업을 편하게 하기 위한 몇 가지 기능들을 제공하고 있다.


1. Export conda environment

아나콘다에서는 현재 가상환경을 yaml 파일 형태로 export 하는 것이 가능하다.

conda activate py39
conda env export > py39.yaml

위처럼 가상환경을 활성화 시켜 주고, conda env export 명령어를 통해 현재 가상환경 세팅 정보를 yaml 파일 형태로 내보내기가 가능하다. > 이후에는 저장될 파일의 위치, 이름을 입력해 주면 되는데, 절대경로가 아니라면 현재 워킹 디렉토리 하에 저장된다.

 

지정한 위치와 이름으로 파일이 하나 생성된다.

 

파일을 열어보면 대략 이런 구조의 내용이 들어 있다.

이 파일을 한번 열어보면 위와 같이 가상환경의 정보가 빼곡히 적혀 있는 것을 확인할 수 있다. 디펜던시 키 아래로 설치된 각종 패키지명과 버전이 리스트의 형태로 저장되어 있다.

 

이제 이 파일이 있으니 내용을 한줄한줄 복사해 가면서 새 가상환경에 패키지를 열심히 설치해 주면 된다!

.. 물론 그럴리는 없고 이렇게 생성된 파일을 이용해 새 가상환경을 만들어 주는 기능 또한 아나콘다에 있다.

 

2. Create conda env using exported file

Conda 가상환경을 생성할 때, -f 옵션을 통해 export 된 파일 경로를 입력해 주면 해당 파일을 이용해 새로운 가상환경을 생성하고, 각종 디펜던시 또한 함께 설치할 수 있다.

conda env create -f py39.yaml
conda activate py39

위처럼 conda env create 이후에 -f {파일 경로} 를 입력해 주면 된다. 다만 새롭게 생성될 가상환경의 이름은 yaml 파일의 name 키에 적혀 있는 대로 정해지기 때문에, 만약 같은 머신에서 다른 이름으로 동일한 가상환경을 생성하고 싶다면 name 키의 값을 수정해 주면 된다.

 

현재 머신의 가상환경 설치 디렉토리가 기존과 다르거나 위처럼 가상환경 이름을 변경하는 경우 prefix 키에 적힌 경로 또한 현재 상황에 맞게 수정해 주도록 하자.

 

그리고, 만약 pip 명령어로 설치할 수 없는 패키지가 존재한다면, 이들은 미리 yaml 파일의 디펜던시 리스트에서 주석 처리하거나 제거해 준 후 설치를 진행해야 한다. 만약 설치 중간에 특정 패키지를 찾을 수 없어 에러가 난다면, 이후 패키지 설치로 계속 진행하는 것이 아니라 문제가 생긴 패키지 이전 패키지들까지만 설치를 완료한 상태로 가상환경 생성을 완료하므로 일이 귀찮아진다.

 

이런 경우엔 가상 환경을 제거하고 yaml 파일을 수정한 후 다시 설치를 진행하자.

conda env remove -n [environment name]

 

만약 다른 머신에 가상환경을 설치해야 하는 경우 yaml 파일을 따로 전송한 후 해당 머신에서 동일하게 설치를 진행하면 된다.

 

3. Clone conda environment

그런데, 같은 머신 상에서 가상환경을 똑같이 새로 만드는 상황이라면 이것보다 훨씬 더 간단한 방법이 있다. 바로 conda create 시 --clone 옵션을 제공해 주는 것이다.

conda create -n py39_test_clone --clone py39

name 옵션에는 복제 결과로 생성될 새 가상환경의 이름을, clone 옵션에는 복제의 대상이 될 가상환경의 이름을 입력해 주면 된다.

done
#
# To activate this environment, use
#
#     $ conda activate py39_test_clone
#
# To deactivate an active environment, use
#
#     $ conda deactivate

(base) PS C:\Users\JhBaek> conda activate py39_test_clone

명령어를 실행시키면 잠시 후 위와 같은 메시지와 함께 가상환경이 생성된다. 활성화 시켜보면 동일하게 가상환경이 세팅된 것을 확인할 수 있다.


본인은 아직까지 아나콘다가 더 편하긴 하지만, 요즘은 도커 이미지를 사용해 실험 환경을 관리하는 게 대세이다. 빠른 시일 내에 도커와 관련된 포스트도 올려 볼 생각이다.

 

아래는 참고할 만한 사이트이다.

References

Anaconda User guide: Managing environments

https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html

반응형