Как запретить 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. (Последний метод имеет самый высокий приоритет.)
Используйте подкоманду conda config
, чтобы изменить настройку.
conda config --set auto_activate_base false
Фактически, бывшая подкоманда conda config
изменяет файл конфигурации .condarc
. Мы можем изменить .condarc
напрямую. Добавьте следующий контент в .condarc
в своем домашнем каталоге,
# auto_activate_base (bool)
# Automatically activate the base environment during shell
# initialization. for 'conda init'
auto_activate_base: false
Установите переменную среды 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