Как запретить Conda активировать базовую среду по умолчанию?
Я недавно установил anaconda2 на моем Mac. По умолчанию Conda настроена на активацию базовой среды, когда я открываю новый сеанс терминала.
Я хочу получить доступ к командам Conda (т.е. я хочу, чтобы путь к Conda был добавлен к моему $PATH, что делает Conda при инициализации, так что это нормально).
Но я обычно не программирую на python и не хочу, чтобы Conda активировала среду по умолчанию.
При первом выполнении conda init
из приглашения Конда добавляет следующее к моему .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
Я прошу Конду не активировать базу, когда я открываю терминальную сессию.
10 ответов
У меня есть conda 4.6 с похожим блоком кода, который был добавлен conda. В моем случае есть параметр конфигурации conda для отключения автоматической активации базы:
conda config --set auto_activate_base false
При первом запуске он создаст ./condarc
в вашем домашнем каталоге с этим параметром, чтобы переопределить значение по умолчанию.
Это не разрушит ваш .bash_profile
но это более чистое решение без ручного редактирования того раздела, которым управляет conda.
Есть 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
имя параметра конфигурации на основе файла к имени параметра переменной среды, сделайте имя полностью прописным и добавьтеCONDA_
. Например, conda'salways_yes
параметр конфигурации можно указать с помощьюCONDA_ALWAYS_YES
переменная окружения.Параметры среды имеют приоритет над соответствующими параметрами в
.condarc
файл.
Ссылки
Ответ немного зависит от версии conda
что вы установили. Для версий conda >= 4.4 этого должно быть достаточно deactivate
среда conda после инициализации, поэтому добавьте
conda deactivate
прямо под
# <<< conda initialize <<<
Чтобы отключить автоматическую активацию базовой среды conda в терминале:
conda config --set auto_activate_base false
Чтобы активировать базовую среду conda:
conda activate
В итоге я обнаружил, что если я закомментировал блок инициализации 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 доступна для активации среды, если я хочу, но не активируется по умолчанию.
Одна вещь, на которую не указывалось, заключается в том, что нет почти никакой разницы между отсутствием активной среды и активацией базовой среды, если вы просто хотите запускать приложения из каталога сценариев Conda (Python) (как хочет @DryLabRebel).
Вы можете установить и удалить через 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
за
conda 4.12.0
(под WOS) сработало следующее (где все предыдущие ответы , включая эти , не помогли):
в вашем
activate.bat
файл (мой был в ~/miniconda3/Scripts/activate.bat ), измените строку:
@REM This may work if there are spaces in anything in %*
@CALL "%~dp0..\condabin\conda.bat" activate %*
в
@REM This may work if there are spaces in anything in %*
@CALL "%~dp0..\condabin\conda.bat" deactivate
это изменение/модификация строки не работает в разделе (файла активации.bat):
@if "%_args1_first%"=="+" if NOT "%_args1_last%"=="+" (
@CALL "%~dp0..\condabin\conda.bat" activate
@GOTO :End
)
может быть, потому что это зависит от того, как вы
miniconda3
(Anaconda Prompt) настроен исполняемый файл:
%windir%\System32\cmd.exe "/K" some-path-to\miniconda3\Scripts\activate.bat some-path-to\miniconda3
(в моем случае).
предостережение : обновление
conda
перезаписывает этот (activate.bat) файл; поэтому нужно изменять указанную выше строку столько раз, сколько необходимо/обновляется. не так много нарушителя сделки, если вы спросите меня.
Если вы хотите, чтобы ваш bashrc оставался простым, вы можете удалить все conda init
создаваемый беспорядок, и оставьте только одну строку:
. "/Users/geoff/anaconda2/etc/profile.d/conda.sh"
См. Рекомендуемое изменение, чтобы включить conda в вашей оболочке.
Это сделает команду conda доступной без активации базовой среды.
Если вы хотите использовать свой bashrc в других системах, где conda не установлена по тому же пути, вы можете оставить if
/fi
строк, чтобы избежать сообщений об ошибках, например:
if [ -f "/Users/geoff/anaconda2/etc/profile.d/conda.sh" ]; then
. "/Users/geoff/anaconda2/etc/profile.d/conda.sh"
fi
Я столкнулся с той же проблемой. Первоначально я удалил.bash_profile, но это неправильный путь. После установки anaconda четко показывает инструкции для решения этой проблемы. Проверьте изображение на предмет решения, предоставленного Anaconda
Это может быть ошибка недавней анаконды. Что мне подходит:
шаг 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 "$@"
step2: закомментируйте последнюю строку: # conda activate "$@"