2016-03-01 44 views
5

我知道我可以用康达删除所有的环境(除了根)

conda remove -n envname --all 

删除一个单一的环境,但我常常用于安装specifiy包或测试,所以我会经常结束了创建多个新环境5-10个环境,并且将它们一个接一个地删除是一种痛苦。是否有一种简单的方法(用于Windows)删除除根环境之外的所有环境?

+0

也许你可以尝试像'conda info --envs'这样的东西,并获取环境列表并使用'conda remove --name envname --all'创建一个通过该列表的循环。显然你需要避免你的根环境。 – Ringil

+0

@Ringil - 如果没有“便利选项”我正在寻找什么,你有任何想法如何做到这一点,并把选项与Windows? – MSeifert

回答

5

卸下envs子目录驻留内conda做工作内的所有目录。

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 
1

不是最优雅的答案。但我只会复制conda info --envs所有环境的名称。然后做一个bash(或.bat适用于Windows)你需要e.g的所有命令文件...

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)向导(或者可能会打扰一些Google搜索),您可以通过管道输出conda info --envs来生成conda remove ...命令。