Как запретить Conda активировать базовую среду по умолчанию? - PullRequest
0 голосов
/ 29 января 2019

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

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

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

При первом запуске 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Я прошу кондне активировать базу при открытии терминальной сессии.

Ответы [ 4 ]

0 голосов
/ 19 августа 2019

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

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 "$@"

step2: закомментируйте последнюю строку: # conda activate "$@"

0 голосов
/ 02 февраля 2019

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

conda deactivate

прямо под

# <<< conda initialize <<<
0 голосов
/ 06 февраля 2019

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

conda config --set auto_activate_base false

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

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

0 голосов
/ 29 января 2019

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

...