最近、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に求めています。
Conda 4.6には、condaによって追加された同様のコードブロックがあります。私の場合、自動ベースアクティベーションを無効にするconda構成設定があります:
conda config --set auto_activate_base false
初めて実行すると、./condarc
をホームディレクトリに設定して、デフォルトを上書きします。
これにより、.bash_profile
しかし、condaが管理するセクションを手動で編集することなく、よりクリーンなソリューションです。
答えは、インストールしたconda
のバージョンに少し依存します。 condaのバージョンが4.4以上の場合、初期化後にconda環境をdeactivate
するだけで十分であるため、
conda deactivate
真下
# <<< conda initialize <<<
結局、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
4.6以降にこれを達成する方法は3つあります。 (最後の方法が最も優先されます。)
サブコマンド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
をシェルの初期化ファイルに設定します。 (bashの場合は.bashrc
、zshの場合は.zshrc
)
CONDA_AUTO_ACTIVATE_BASE=false
condarc
ファイルベースの構成パラメーター名から環境変数パラメーター名に変換するには、名前をすべてuppercaseおよびprependCONDA_
。たとえば、condaのalways_yes
構成パラメーターは、CONDA_ALWAYS_YES
環境変数を使用して指定できます。
環境設定は、.condarc
ファイルの対応する設定よりも優先されます。
conda config --describe
ターミナルでcondaベース環境の自動アクティベーションを無効にするには:
conda config --set auto_activate_base false
Condaベース環境をアクティブにするには:
conda activate
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