単一の環境を削除できることはわかっています
conda remove -n envname --all
しかし、特定のパッケージをインストールしたりテストしたりするために複数の新しい環境を作成することがよくあるため、定期的に5〜10の環境になり、次々に削除するのは面倒です。ルート環境を除くすべての環境を削除する簡単な方法(Windowsの場合)はありますか?
envs
内にあるconda
サブディレクトリ内のすべてのディレクトリを削除すると機能します。
最もエレガントな答えではありません。ただし、すべての環境の名前をconda info --envs
からコピーするだけです。次に、必要なすべてのコマンドを使用してbash(またはWindowsの場合は.bat)ファイルを作成します。
conda remove -n env_name_1 --all -y
conda remove -n env_name_2 --all -y
conda remove -n env_name_3 --all -y
conda remove -n env_name_4 --all -y
conda remove -n env_name_5 --all -y
または、それをコピーしてターミナルに貼り付けるだけで、整理されます。
私がちょっとしたbash(または.bat)ウィザードだった場合(またはグーグルをするのが面倒だった場合)、conda info --envs
からの出力をパイプしてconda remove ...
コマンドを生成できます。
私のコメントによると、1つのcondaコマンドですべての環境を取得し、それをループして個別に削除することができます。これがあなたがこのようなことをすることができる1つの方法です。 anaconda_command_Prompt_string
を、Anacondaコマンドプロンプトが呼び出す適切な文字列に置き換える必要があることに注意してください。また、このコードはおそらく非常に壊れやすいものです。
from subprocess import PIPE, Popen
anaconda_command_Prompt_string = 'C:\\Windows\\system32\\cmd.exe "/K" C:\\Users\\your_user_name\\AppData\\Local\\Continuum\\Anaconda3\\Scripts\\activate.bat C:\\Users\\your_user_name\\AppData\\Local\\Continuum\\Anaconda3'
p = Popen(anaconda_command_Prompt_string, stdin=PIPE, stdout=PIPE, bufsize=1)
p.stdout.readline(), # read the first line
print >>p.stdin, 'conda env list' # write input
p.stdin.flush()
p.stdout.readline()
p.stdout.readline()
p.stdout.readline()
p.stdout.readline()
envs = []
line = 'Anaconda'
while 'Anaconda' in line:
line = p.stdout.readline()
name = line.replace(' ', '').split('C:')[0]
if 'root' not in name and '\n' not in name:
envs.append(name)
for name in envs:
command_string = 'conda remove -n {0} --all --yes'.format(name)
print >>p.stdin, command_string
p.stdin.flush()
line = p.stdout.readline()
while 'Complete' not in line:
print line
line = p.stdout.readline()
print line