Как запретить Conda активировать базовую среду по умолчанию?

Я недавно установил anaconda2 на моем Mac. По умолчанию Conda настроена на активацию базовой среды, когда я открываю новый сеанс терминала.

Я хочу получить доступ к командам Conda (то есть я хочу, чтобы путь к Conda был добавлен в мой $ PATH, что делает Conda при инициализации, так что все в порядке).

Но я обычно не программирую на python и не хочу, чтобы Conda активировала среду по умолчанию.

При первом запуске conda init из conda init строки, Conda добавляет следующее в мой .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 я прошу Конду не активировать базу, когда я открываю терминальную сессию.

Ответ 1

У меня есть conda 4.6 с похожим блоком кода, который был добавлен conda. В моем случае есть параметр конфигурации conda для отключения автоматической активации базы:

conda config --set auto_activate_base false

При первом запуске он создаст ./condarc в вашем домашнем каталоге с этим параметром, чтобы переопределить значение по умолчанию.

Это не снимает помехи с вашего .bash_profile но это более чистое решение без ручного редактирования того раздела, которым управляет conda.

Ответ 2

В итоге я обнаружил, что если я закомментировал блок инициализации 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 доступна для активации среды, если я хочу, но не активируется по умолчанию.

Ответ 3

Ответ немного зависит от версии установленного вами conda. Для версий conda> = 4.4 должно быть достаточно deactivate среду conda после инициализации, поэтому добавьте

conda deactivate

прямо под

# <<< conda initialize <<<

Ответ 4

Есть 3 способа достичь этого после conda 4.6. (Последний метод имеет самый высокий приоритет.)

  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 в файле инициализации оболочки. (.bashrc для bash, .zshrc для zsh)

    CONDA_AUTO_ACTIVATE_BASE=false
    

    Чтобы преобразовать из имени параметра конфигурации на основе файла condarc в имя параметра переменной среды, задайте все прописные буквы и prepend CONDA_. Например, параметр конфигурации condas always_yes можно указать с помощью переменной среды CONDA_ALWAYS_YES.

    Настройки среды имеют приоритет над соответствующими настройками в файле .condarc.

Ссылки

Ответ 5

Ну, никогда не используйте conda environment, если вы хотите жить счастливо. Это был мой окончательный вывод.

Ответ 6

Это может быть ошибка недавней анаконды. Что работает для меня:

Шаг1: 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 "[email protected]"

step2: закомментируйте последнюю строку: # conda activate "[email protected]"

Ответ 7

Чтобы отключить автоматическую активацию базовой среды conda в терминале:

conda config --set auto_activate_base false

Чтобы активировать базовую среду conda:

conda activate