web-dev-qa-db-fra.com

Comment empêcher Conda d'activer l'environnement de base par défaut?

J'ai récemment installé anaconda2 sur mon Mac. Par défaut, Conda est configuré pour activer l'environnement de base lorsque j'ouvre une nouvelle session de terminal.

Je veux accéder aux commandes Conda (c'est-à-dire que je veux que le chemin vers Conda soit ajouté à mon $ PATH, ce que Conda fait lors de l'initialisation, donc ça va).

Mais je ne programme pas d'habitude en python, et je ne veux pas que Conda active un environnement par défaut.

Lors de la première exécution de conda init de l'invite, Conda ajoute ce qui suit à mon .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 <<<

Si je commente tout le bloc, je ne peux activer aucun environnement Conda.

J'ai essayé de commenter tout le bloc à l'exception de

export PATH="/Users/geoff/anaconda2/bin:$PATH"

Mais quand j'ai commencé une nouvelle session et essayé d'activer un environnement, j'ai reçu ce message d'erreur:

CommandNotFoundError: Your Shell has not been properly configured to use 'conda activate'.

Cette question (et d'autres comme ça) sont utiles, mais ne répondent finalement pas à ma question et conviennent mieux aux utilisateurs de Linux.

Pour plus de précision, je ne demande pas de supprimer le (base) de mon $PS1 Je demande à Conda de ne pas activer la base lorsque j'ouvre une session de terminal.

199
DryLabRebel

J'ai conda 4.6 avec un bloc de code similaire qui a été ajouté par conda. Dans mon cas, il y a un paramètre de configuration conda pour désactiver l'activation automatique de la base:

conda config --set auto_activate_base false

La première fois que vous l'exécuterez, il créera un ./condarc dans votre répertoire personnel avec ce paramètre pour remplacer la valeur par défaut.

Cela n'encombrerait pas votre .bash_profile mais c'est une solution plus propre sans modification manuelle de la section gérée par conda.

378
jieong

La réponse dépend un peu de la version de conda que vous avez installée. Pour les versions de conda> = 4.4, il devrait suffire de deactivate l'environnement conda après l'initialisation, donc ajoutez

conda deactivate

juste en dessous

# <<< conda initialize <<<
20
darthbith

Donc à la fin, j'ai trouvé que si je commentais le bloc d'initialisation Conda comme ceci:

# >>> 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 <<<

Cela fonctionne exactement comme je veux. Autrement dit, Conda est disponible pour activer un environnement si je le souhaite, mais ne s'active pas par défaut.

17
DryLabRebel

Il existe 3 façons d'y parvenir après conda 4.6. (La dernière méthode a la priorité la plus élevée.)

  1. Utilisez la sous-commande conda config Pour modifier le paramètre.

    conda config --set auto_activate_base false
    
  2. En fait, l'ancienne sous-commande conda config Change le fichier de configuration .condarc. Nous pouvons modifier .condarc Directement. Ajoutez le contenu suivant dans .condarc Sous votre répertoire personnel,

    # auto_activate_base (bool)
    #   Automatically activate the base environment during Shell
    #   initialization. for `conda init`
    auto_activate_base: false
    
  3. Définissez la variable d'environnement CONDA_AUTO_ACTIVATE_BASE Dans le fichier init du Shell. (.bashrc Pour bash, .zshrc Pour zsh)

    CONDA_AUTO_ACTIVATE_BASE=false
    

    Pour convertir le nom de paramètre de configuration basé sur un fichier condarc en nom de paramètre de variable d'environnement, mettez tout le nom en majuscule et préfixe CONDA_. Par exemple, le paramètre de configuration always_yes De conda peut être spécifié à l'aide d'une variable d'environnement CONDA_ALWAYS_YES.

    Les paramètres d'environnement ont priorité sur les paramètres correspondants du fichier .condarc.

Références

12
Simba

Pour désactiver l'activation automatique de l'environnement conda base dans le terminal:

conda config --set auto_activate_base false

Pour activer l'environnement conda base:

conda activate
7
kudibaba

Si vous voulez garder votre bashrc simple, vous pouvez supprimer tous les conda init a généré de l'encombrement et ne conserve qu'une seule ligne:

. "/Users/geoff/anaconda2/etc/profile.d/conda.sh"

Voir Modification recommandée pour activer la conda dans votre shell .

Cela rendra la commande conda disponible sans activer l'environnement de base.

Si vous souhaitez utiliser votre bashrc sur d'autres systèmes où conda n'est pas installé sur le même chemin, vous pouvez également conserver les lignes if/fi pour éviter les messages d'erreur, à savoir:

if [ -f "/Users/geoff/anaconda2/etc/profile.d/conda.sh" ]; then
    . "/Users/geoff/anaconda2/etc/profile.d/conda.sh"
fi
1
coldfix