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


235

最近、Macにanaconda2をインストールしました。デフォルトでは、Condaは、新しいターミナルセッションを開いたときに基本環境をアクティブにするように構成されています。

Condaコマンドにアクセスしたい(つまり、初期化時にCondaが実行する$ PATHにCondaへのパスを追加したいので、問題ない)。

しかし、私は通常pythonでプログラムしていませんし、デフォルトでCondaに環境をアクティブ化させたくありません。

conda initプロンプトから最初に実行すると、Condaはmyに以下を追加します.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ユーザーにより適しています。

明確にするために、ターミナルセッションを開いたときにCondaがベースをアクティブ化しないように要求している(base)からを削除するように求めているのではありません$PS1


source activate代わりに使用しようとしましたか?別名「オールドスクールメソッド」
イエナ

回答:


482

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

conda config --set auto_activate_base false

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

これはあなたを混乱させることはないでしょう.bash_profileが、それはcondaが管理するそのセクションを手動で編集することなしによりクリーンな解決策です。


1
すごい。設定についてどこで知りましたか?入門チュートリアルのどこかで読んだ覚えがないので?
DryLabRebel

6
@DryLabRebelリリースノートには記載されていませんが、を実行すると、設定オプションで説明されていることがわかりますconda config --describe。コードベースで「auto_activate_base」を検索すると、Conda v4.6.0が導入であることがわかります。
merv

2
エラーが発生しました。ごめんなさい!@mervは、構成にあるという点で正しいです。私は別の問題の別のオプションを見ていて、そのオプションを見ました。
jieong

5
@DryLabRebelインストーラーがAnacondaを初期化した後、次のように出力されます。起動時にcondaの基本環境をアクティブにしない場合は、auto_activate_baseパラメーターをfalseに設定します。Anaconda3 conda config --set auto_activate_base falseをインストールしていただき、ありがとうございます。
Zhi Yuan

5
この回答をどうもありがとう。IMOこれはデフォルトの動作です。Linuxを使用していて、リンクされたLinuxの質問に従う必要があるか疑問に思う場合は、OSに関係なく動作するようです(Linux Mintはこちら)
Kamel

22

答えは、condaインストールしたバージョンによって多少異なります。condaのバージョンが4.4以上の場合はdeactivate、初期化後のconda環境で十分なので、次を追加します。

conda deactivate

真下

# <<< conda initialize <<<

5
これでうまくいき、一般化するはずです。しかし、私はそれを追加するよりも、bashプロファイルを整理するソリューションを好みます。
DryLabRebel

整理できるかどうかは、使用しているcondaのバージョンによって異なります。私が正しく理解していれば、conda 4.6があれば__conda_setup関数が必要なだけなので、全体を6行にまとめることができます。しかし、私はここで整理するために多くがあるとは思いません...
ダースビッチ19/03/02

2
しかし、そのセクションを手動で編集すると、condaはそれを自動的に管理できなくなります。そのままにしておくことをお勧めします。
ダースビッチ

2
これは機能せず、.zshrcにcondaコードが追加された新しいシェルを開くと、毎回(ベース)環境にプッシュされます。
マーリン

1
マーリンが言ったとおり、新しいターミナルを開始すると再び(ベース)が発生します
jreft56

18

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


5
残念ながら、コードブロックの最初に述べたように、ブロックの内容が他のスクリプトによって管理されている場合、この変更は他のスクリプトによって置き換えられたりロールバックされたりする可能性があります。
Kukanani

@DryLabRebel- rcファイルから混乱を取り除く堅牢なアプローチを見つけたことがありますか?私はそれが最高のものを乱雑にするのではなく、他のENVSのようなちょうど御馳走condaにできること、あまりにもこれに興味がある
baxx

@baxxいいえ、私はしていません。condaの最新バージョンが必要で、それを機能させたい場合は、初期化コマンドが本当に必要です。
DryLabRebel

わかりました、一元化された場所ではなくプロジェクトディレクトリにconda envをインストールするだけで回避策があるかもしれません。まだはっきりしていません
baxx

これはを使用conda config --set auto_activate_base falseする場合に比べて欠点があるようですが、詳しく説明できますか?
AMC

16

conda4.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シェルのinitファイルに環境変数を設定します。(.bashrcbashの場合.zshrc、zshの場合)

    CONDA_AUTO_ACTIVATE_BASE=false

    condarcファイルベースの構成パラメーター名から環境変数パラメーター名に変換するには、名前をすべて大文字にし先頭に付加し CONDA_ます。たとえば、condaのalways_yes構成パラメーターは、CONDA_ALWAYS_YES環境変数を使用して指定できます。

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

参考文献


素晴らしい答え。:私はそうのように、この動作を制御するために、スクリプト内のenv VARメソッドを使用export CONDA_AUTO_ACTIVATE_BASE=false; eval "$(conda shell.bash hook)"
ケビンOlree

export CONDA_AUTO_ACTIVATE_BASE=falseオプション3 を機能させるには、.zshrc に追加する必要がありました。
ノルマニウス

9

端末でconda基本環境の自動アクティブ化を無効にするには:

conda config --set auto_activate_base false

conda基本環境をアクティブ化するには:

conda activate

3
ねえ、この答えは正しいですが、受け入れられた答えと実質的に同じです。私の質問は、コンドミニアムのアクティブ化に関係するものではありません。これは、チュートリアルを行うときに最初に学ぶことの1つです。前の回答ではまだ提供されていない、役立つ関連情報を追加することを検討してください。
DryLabRebel

2
自動を無効にした後で手動でアクティブにする方法を探していました。ありがとう!
eigil

これは役に立ちました。自動アクティブ化を無効にした後でcondaを手動でアクティブ化する方法も探していました。
Chris Njuguna

1

指摘されていないことの1つは、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

0

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

bashrcを単純に保ちたい場合は、conda initで生成されたクラッターをすべて削除し、1行のみを保持することができます。このブロック内のコンテンツは「conda init」によって管理されます!! ?適切なConda設定/構成オプションを変更するだけでなく、これを行う利点は何ですか?
AMC

-2

これは最近のアナコンダのバグかもしれません。私のために働くもの:

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

ステップ2:最後の行をコメント化します。 # conda activate "$@"


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.