프로젝트 디렉토리에 들어갈 때 마다 conda activate를 할 필요 없이, 해당 디렉토리에 들어가기만 하면 지정된 환경을 셋팅할 수 있다.
- direnv를 설치한다.
sudo apt install direnv
2. bashrc의 끝에 다음을 추가한다.
# >>> my export init >>>
export iam="$(whoami)"
export CONDA_HOME="/home/${iam}/miniconda3"
export CONDA_DEFAULT_ENV="base"
[[ “:${PATH}:” != *”:${CONDA_HOME}/bin:”* ]] && export PATH=”${CONDA_HOME}/bin:${PATH}”
# <<< my export init <<<
# <<< direnv init <<<
# Ref Url: https://github.com/direnv/direnv/wiki/Python
show_conda_env() {
if [[ -n “$CONDA_DEFAULT_ENV” ]]; then
echo "($(basename $CONDA_DEFAULT_ENV))"
fi
}
export -f show_conda_env
# TURN OFF CONDA PROMPT CHANGE IF USING BELOW PROMPT
# USE THE FOLLOWING COMMAND TO TURN OFF CONDA PROMPT:
conda config --set changeps1 False
PS1='$(show_conda_env)'$PS1
eval "$(direnv hook bash)"
# <<< direnv init <<<
3. 홈 디렉토리에 .direnv 파일을 만들고 다음을 복사해 넣는다.
layout_anaconda() {
# Ref Url: https://github.com/direnv/direnv/wiki/Python
# local ANACONDA_HOME=”${HOME}/anaconda3"
# PATH_add “$ANACONDA_HOME”/bin
if [ -n "$1" ]; then
# Explicit environment name from layout command.
local env_name="$1"
source activate ${env_name}
elif (grep -q name: environment.yml); then
# Detect environment name from `environment.yml` file in `.envrc` directory
source activate 'grep name: environment.yml | sed -e 's/name: //' | cut -d "'" -f 2 | cut -d '"' -f 2'
else
(>&2 echo No environment specified);
exit 1;
fi;
}
4. 원하는 프로젝트 디렉토리에 .envrc 파일을 만들고, 다음과 같이 기재한다.
layout anaconda pt211
- 여기에서 ‘pt211’을 원하는 environment 이름으로 바꿔준다.
5. direnv allow를 실행하여 변경된 사항을 등록한다.
$ direnv allow
- .envrc 파일을 변경할 때 마다 이 명령을 실행해야 한다.
6. 이후부터는 이 디렉토리에 들어오면 자동으로 pt211 환경으로 바뀌고, 디렉토리에서 나오면 자동으로 deactivate 된다.