Conda删除所有环境(root除外)

时间:2016-03-01 11:38:56

标签: python anaconda conda

我知道我可以用

删除单个环境
 conda remove -n envname --all

但是我经常创建多个新环境来安装特定的软件包或对其进行测试,因此我经常以5-10个环境结束,并且将它们相互删除是一件痛苦的事。是否有一种简单的方法(对于Windows)删除除根环境之外的所有环境?

4 个答案:

答案 0 :(得分:11)

删除驻留在envs内的conda子目录中的所有目录。

答案 1 :(得分:1)

根据我的评论,您可以使用一个conda命令获取所有环境,然后尝试循环遍历它并单独删除它们。这是你可以做这样的事情的一种方式。请注意,您应该使用Anaconda命令提示符调用的相应字符串替换anaconda_command_prompt_string。此代码也可能非常脆弱:

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

答案 2 :(得分:1)

不是最优雅的答案。但我只想从conda info --envs复制所有环境的名称。然后用你需要的所有命令制作一个bash(或.bat for windows)文件,例如...

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 ...命令。

答案 3 :(得分:1)

基于Mac / Linux的系统可以删除所有此类环境。

for i in `conda env list|awk '{print $1}'|egrep -v 'base|#'|tr '\n' ' '`;do echo $i;conda env remove --name $i;done