web-dev-qa-db-ja.com

Condaがデフォルトでベース環境をアクティブ化しないようにするにはどうすればよいですか?

最近、Macにanaconda2をインストールしました。デフォルトでは、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を削除することを求めていません。ターミナルセッションを開いたときにベースをアクティブにしないようにCondaに求めています。

173
DryLabRebel

Conda 4.6には、condaによって追加された同様のコードブロックがあります。私の場合、自動ベースアクティベーションを無効にするconda構成設定があります:

conda config --set auto_activate_base false

初めて実行すると、./condarcをホームディレクトリに設定して、デフォルトを上書きします。

これにより、.bash_profileしかし、condaが管理するセクションを手動で編集することなく、よりクリーンなソリューションです。

339
jieong

答えは、インストールしたcondaのバージョンに少し依存します。 condaのバージョンが4.4以上の場合、初期化後にconda環境をdeactivateするだけで十分であるため、

conda deactivate

真下

# <<< conda initialize <<<
19
darthbith

結局、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を使用して環境をアクティブ化できますが、デフォルトではアクティブ化されません。

17
DryLabRebel

conda 4.6以降にこれを達成する方法は3つあります。 (最後の方法が最も優先されます。)

  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をシェルの初期化ファイルに設定します。 (bashの場合は.bashrc、zshの場合は.zshrc

    CONDA_AUTO_ACTIVATE_BASE=false
    

    condarcファイルベースの構成パラメーター名から環境変数パラメーター名に変換するには、名前をすべてuppercaseおよびprependCONDA_。たとえば、condaのalways_yes構成パラメーターは、CONDA_ALWAYS_YES環境変数を使用して指定できます。

    環境設定は、.condarcファイルの対応する設定よりも優先されます

参照資料

10
Simba

ターミナルでcondaベース環境の自動アクティベーションを無効にするには:

conda config --set auto_activate_base false

Condaベース環境をアクティブにするには:

conda activate
7
kudibaba

Bashrcをシンプルに保ちたい場合は、すべてのconda init混乱を生成し、1行のみを保持します。

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

シェルでcondaを有効にするための推奨変更 を参照してください。

これにより、基本環境をアクティブ化せずにcondaコマンドを使用できるようになります。

Condaが同じパスにインストールされていない他のシステムでbashrcを使用する場合、エラーメッセージを回避するために、if/fi行も保持できます。

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