만약 리눅스에서 아나콘다를 쓴다면 편하게 터미널에 명령어로 가상환경을 활성화하거나 비활성화 할 수 있다. 예를 들어 가상환경 이름이 venv라고 하면, conda activate '환경이름'으로 활성화하고, conda deactivate로 비활성화 한다. 이 때 가상환경을 활성화 할 때마다 특정 명령어를 실행하고, 그 가상환경을 비활성 할 때도 역시 특정 명령어를 실행하고 싶다면,  다음과 같은 방법을 따르면 된다.

 

콘다가 설치 된 디렉토리에서 해당 가상환경의 하위 디렉토리에 etc라는 것이 있다. 이 디렉토리의 하위 디렉토리로 conda/activate.dconda/deactivated.d를 만들어서 실행하고자 하는 명령어를 넣으면 된다. 이름에서 짐작할 수 있는 것 처럼 활성화 할 때 activate.d 내의 명령어가 자동 실행되고, 비활성화 할 때는 deactivate.d에 설정한 명령어가 자동실행된다.

 

그러면 여기서는 가상환경을 활성화 할 때, 이전 글( 아나콘다에서 가상환경 마다 환경변수 PATH 설정하기 )에서 예시로 들었던 것 처럼 환경변수를 설정하고, 가상환경을 비활성화 할 때 환경변수의 설정을 되돌리는 방법을 실습하기로 한다. 미니콘다를 쓴다면 가정하면, 

 

1. 가상환경 활성화 할 때 명령어 자동 실행

~/miniconda/env/<가상환경이름>/etc/conda/activated./set_path.sh 를 만들고, 편집기로 열어서 아래와 같은 명령어를 넣는다. 아래 예시 명령어는 기존의 환경변수에 새로운 경로를 넣는 것을 뜻한다.

export PATH="$PATH:/home/this_user/ffmpeg6/bin/"

 

2. 가상환경을 비활성화 할 때 명령어 자동 실행

~/miniconda/env/<가상환경이름>/etc/conda/deactivated./unset_path.sh 를 만들고, 편집기로 열어서 아래와 같은 명령어를 넣는다. 아래 예시는 sed 명령어를 응용해서 환경변수에 설정해둔 특정 디렉토리에 해당하는 문자열을 제거하는 것이다. 

export PATH="$(echo $PATH | sed 's/:\/home\/this_user\/ffmpeg6\/bin//g')"

 

이렇게 설정하면, 이전 글에서 소개한 방법으로 PATH를 세팅했을 때, 콘다 경고 문구가 발생할 수도 있는 현상(환경변수를 덮어쓰기로 세팅해서 경고 해줌)도 없고 깔끔하다.

 

참고. https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#activating-an-environment

Posted by 공돌이pooh
,