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


234

최근에 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을 요구하고있다.


source activate대신 사용해 보셨습니까 ? 일명 "올드 스쿨 방법"
jena

답변:


481

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

conda config --set auto_activate_base false

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

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


1
큰. 설정에 대한 정보는 어디에서 찾았습니까? 입문 자습서 어디에서나 읽은 것을 기억하지 못합니까?
DryLabRebel

6
@DryLabRebel 릴리즈 노트에는 언급되어 있지 않지만을 실행하여 구성 옵션에 설명되어 있습니다 conda config --describe. "auto_activate_base"에 대한 코드베이스를 검색하면 Conda v4.6.0이 소개 된 것으로 표시됩니다.
merv 2016 년

2
죄송합니다. 질문이 없습니다. 죄송합니다! @merv는 구성에 있다는 점에서 정확합니다. 나는 다른 문제에 대한 다른 옵션을보고 있었고 그 옵션을 보았습니다.
jieong

5
@DryLabRebel 설치 프로그램이 Anaconda를 초기화 한 후 인쇄됩니다. 시작시 conda의 기본 환경을 활성화하지 않으려면 auto_activate_base 매개 변수를 false로 설정 conda config --set auto_activate_base false하십시오. Anaconda3를 설치해 주셔서 감사합니다!
Zhi Yuan

5
이 답변에 정말 감사합니다. IMO 이것이 기본 동작이어야합니다. 리눅스가 링크 된 리눅스 질문을 따라야하는지 궁금해하는 사람들은 OS에 관계없이 작동하는 것 같습니다 (Linux Mint here)
Kamel

22

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

conda deactivate

바로 아래

# <<< conda initialize <<<

5
그것은 작동하고 일반화되어야합니다. 그러나 나는 내 bash 프로파일을 추가하는 대신 혼란스럽게 만드는 솔루션을 선호합니다.
DryLabRebel

정리할 수 있는지 여부는 사용중인 콘다의 버전에 따라 다릅니다. 내가 올바르게 이해한다면, 일단 conda 4.6이 있으면 __conda_setup함수 만 필요 하므로 모든 것을 6 줄로 줄일 수 있습니다. 그러나 나는 여기 declutter하는 것이 훨씬 생각하지 않습니다 ...
darthbith

2
그러나 해당 섹션을 수동으로 편집하면 conda가 더 이상 자동으로 섹션을 관리 할 수 ​​없습니다. 그냥 내버려 두는 것이 좋습니다.
darthbith

2
.zshrc에 추가 된 conda 코드로 새 쉘을 열면 작동하지 않습니다. 매번 (기본) 환경으로 푸시됩니다.
멀린

1
멀 다시 (베이스)가 새로운 단말 오퍼부터 상기 그대로
jreft56

18

결국 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는 원하는 경우 환경을 활성화하는 데 사용할 수 있지만 기본적으로 활성화되지는 않습니다.


5
불행히도, 블록 내용이 코드 블록의 시작 부분에 명시된 바와 같이 다른 스크립트에 의해 관리되는 경우이 변경 사항은 다른 스크립트에 의해 대체되거나 롤백 될 수 있습니다.
Kukanani

@DryLabRebel- rc파일 에서 혼란을 제거하는 강력한 접근법을 찾은 적이 있습니까? 나도 이것에 관심이 있고, 물건을 어지럽히 기보다는 다른 환경과 같이 콘 다를 다룰 수 있다는 것
baxx

@baxx 아니요. 최신 버전의 conda를 원하고 작동하려면 초기화 명령이 필요합니다.
DryLabRebel

좋아, 응원, 나는 단지 중앙 위치가 아닌 프로젝트 디렉토리에 conda env를 설치하면 주위에 방법이있을 수 있다고 생각합니다. 아직 확실하지 않음
baxx

이것은를 사용하는 것보다 단점이있는 것 같습니다. conda config --set auto_activate_base false정교 할 수 있습니까?
AMC

16

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 파일의 해당 설정 보다 우선 합니다.

참고 문헌


좋은 대답입니다. 스크립트에서 env var 메소드를 사용하여이 동작을 다음과 같이 제어합니다.export CONDA_AUTO_ACTIVATE_BASE=false; eval "$(conda shell.bash hook)"
Kevin Olree

export CONDA_AUTO_ACTIVATE_BASE=false옵션 3이 작동하려면 .zshrc에 추가 해야했습니다.
normanius

9

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

conda config --set auto_activate_base false

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

conda activate

3
이 답변은 정확하지만 실제로 허용되는 답변과 동일합니다. 내 질문은 콘도 활성화와 관련이 없으며 자습서를 진행할 때 가장 먼저 배우는 것 중 하나입니다. 이전 답변에서 아직 제공되지 않은 유용한 관련 정보를 추가해보십시오.
DryLabRebel

2
자동을 비활성화 한 후 수동으로 활성화하는 방법을 찾고있었습니다. 감사!
eigil

도움이되었습니다. 또한 자동 활성화를 비활성화 한 후 conda를 수동으로 활성화하는 방법을 찾고있었습니다.
Chris Njuguna

1

지적되지 않은 한 가지는, @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

0

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

당신이 당신의 bashrc에 간단을 유지하려면, 당신은 모든 CONDA이 혼란을 생성 init로 제거하고 단 하나의 라인을 유지할 수 있습니다 이렇게 말한다 "혼란"을 ! 이 블록 내의 내용은 'conda init'로 관리됩니다 !! ? 적절한 Conda 설정 / 구성 옵션을 변경하는 대신이 작업을 수행하면 어떤 이점이 있습니까?
AMC

-2

이것은 최근 아나콘다의 버그 일 수 있습니다. 나를 위해 일하는 것 :

step1 : vim /anaconda/bin/activate, 그것은 보여줍니다 :

 #!/bin/sh                                                                                
 _CONDA_ROOT="/anaconda"
 # Copyright (C) 2012 Anaconda, Inc
 # SPDX-License-Identifier: BSD-3-Clause
 \. "$_CONDA_ROOT/etc/profile.d/conda.sh" || return $?
 conda activate "$@"

2 단계 : 마지막 행을 주석 처리하십시오. # conda activate "$@"


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.