[bash] Conda가 기본적으로 기본 환경을 활성화하지 못하게하려면 어떻게합니까?

최근에 Mac에 anaconda2를 설치했습니다. 기본적으로 Conda는 새로운 터미널 세션을 열 때 기본 환경을 활성화하도록 구성되어 있습니다.

Conda 명령에 액세스하고 싶습니다 (즉, Conda가 초기화 될 때 Conda가 수행하는 $ PATH에 경로를 추가하고 싶습니다).

그러나 나는 보통 파이썬으로 프로그래밍하지 않으며 Conda가 기본적으로 환경을 활성화하기를 원하지 않습니다.

conda init프롬프트에서 처음 실행될 때 Conda는 다음을 my에 추가합니다 .bash_profile.

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/Users/geoff/anaconda2/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
if [ -f "/Users/geoff/anaconda2/etc/profile.d/conda.sh" ]; then
    . "/Users/geoff/anaconda2/etc/profile.d/conda.sh"
else
    export PATH="/Users/geoff/anaconda2/bin:$PATH"
fi
# fi
unset __conda_setup
# <<< conda initialize <<<

전체 블록을 주석 처리하면 Conda 환경을 활성화 할 수 없습니다.

를 제외한 전체 블록을 주석 처리하려고했습니다.

export PATH="/Users/geoff/anaconda2/bin:$PATH"

그러나 새 세션을 시작하고 환경을 활성화하려고 할 때 다음 오류 메시지가 나타납니다.

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.

이 질문 (및 다른 질문들 )은 도움이되지만 궁극적으로 내 질문에 대답하지는 않으며 Linux 사용자에게 더 적합합니다.

설명을 위해, 나는를 제거하라는 게 아니에요 (base)내에서 $PS1내가 터미널 세션을 열 때 내가 활성화 기본으로하지 CONDA을 요구하고있다.



답변

conda가 추가 한 유사한 코드 블록이있는 conda 4.6이 있습니다. 필자의 경우 자동 기본 활성화를 비활성화하는 conda 구성 설정이 있습니다.

conda config --set auto_activate_base false

처음 실행하면 ./condarc홈 디렉토리에 해당 설정을 사용하여 기본값을 재정의합니다.

이것은 혼란 .bash_profile스럽지 않지만 conda가 관리하는 섹션을 수동으로 편집하지 않으면 더 깨끗한 솔루션입니다.


답변

대답 conda은 설치 한 버전에 따라 다릅니다 . conda> = 4.4 버전의 deactivate경우 초기화 후 conda 환경에 충분해야 합니다.

conda deactivate

바로 아래

# <<< conda initialize <<<


답변

결국 Conda 초기화 블록을 주석 처리하면 다음과 같이 나타났습니다.

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
# __conda_setup="$('/Users/geoff/anaconda2/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
# if [ $? -eq 0 ]; then
    # eval "$__conda_setup"
# else
if [ -f "/Users/geoff/anaconda2/etc/profile.d/conda.sh" ]; then
    . "/Users/geoff/anaconda2/etc/profile.d/conda.sh"
else
    export PATH="/Users/geoff/anaconda2/bin:$PATH"
fi
# fi
# unset __conda_setup
# <<< conda initialize <<<

내가 원하는 방식대로 작동합니다. 즉, Conda는 원하는 경우 환경을 활성화하는 데 사용할 수 있지만 기본적으로 활성화되지는 않습니다.


답변

conda4.6 이후에 이것을 달성하는 3 가지 방법이 있습니다. 마지막 방법이 우선 순위가 높습니다.

  1. 하위 명령 conda config을 사용하여 설정을 변경하십시오.

    conda config --set auto_activate_base false
  2. 실제로 이전 conda config하위 명령은 구성 파일을 변경하고 있습니다 .condarc. .condarc직접 수정할 수 있습니다. .condarc홈 디렉토리 아래에 다음 내용을 추가하십시오 .

    # auto_activate_base (bool)
    #   Automatically activate the base environment during shell
    #   initialization. for `conda init`
    auto_activate_base: false
  3. CONDA_AUTO_ACTIVATE_BASE쉘의 init 파일에서 환경 변수 를 설정 하십시오. ( .bashrcbash, .zshrczsh)

    CONDA_AUTO_ACTIVATE_BASE=false

    으로부터 변환하려면 condarc환경 변수의 매개 변수 이름에 파일 기반 구성 매개 변수의 이름, 이름 모두 만들 대문자앞에 붙입니다 CONDA_ . 예를 들어, 환경 변수를 always_yes사용하여 conda의 구성 매개 변수를 지정할 수 있습니다 CONDA_ALWAYS_YES.

    환경 설정 .condarc 파일의 해당 설정 보다 우선 합니다.

참고 문헌


답변

터미널에서 conda 기본 환경의 자동 활성화를 비활성화하려면 :

conda config --set auto_activate_base false

콘다베이스 환경을 활성화하려면 :

conda activate


답변

지적되지 않은 한 가지는, @DryLabRebel이 원하는대로 Conda (Python ‘s) 스크립트 디렉토리에서 응용 프로그램을 실행하려는 경우 활성 환경이없는 것과 기본 환경을 활성화하는 것 사이에는 거의 차이가 없다는 것입니다 ).

conda를 통해 설치 및 제거 할 수 있으며 conda는 기본 환경을 활성으로 표시합니다. 기본적으로 다음과 같습니다.

> echo $Env:CONDA_DEFAULT_ENV
> conda env list
# conda environments:
#
base                  *  F:\scoop\apps\miniconda3\current

> conda activate
> echo $Env:CONDA_DEFAULT_ENV
base
> conda env list
# conda environments:
#
base                  *  F:\scoop\apps\miniconda3\current


답변

bashrc를 단순하게 유지하려면 conda init생성 된 모든 혼란을 제거 하고 한 줄만 유지할 수 있습니다.

. "/Users/geoff/anaconda2/etc/profile.d/conda.sh"

쉘에서 conda를 활성화하려면 권장 변경 사항을 참조하십시오 .

이렇게하면 기본 환경을 활성화하지 않고 conda 명령을 사용할 수 있습니다.

conda가 동일한 경로에 설치되지 않은 다른 시스템에서 bashrc를 사용하려는 경우 if/ fi줄을 유지하여 오류 메시지를 피할 수 있습니다 .

if [ -f "/Users/geoff/anaconda2/etc/profile.d/conda.sh" ]; then
    . "/Users/geoff/anaconda2/etc/profile.d/conda.sh"
fi