我知道我可以用康达删除所有的环境(除了根)
conda remove -n envname --all
删除一个单一的环境,但我常常用于安装specifiy包或测试,所以我会经常结束了创建多个新环境5-10个环境,并且将它们一个接一个地删除是一种痛苦。是否有一种简单的方法(用于Windows)删除除根环境之外的所有环境?
我知道我可以用康达删除所有的环境(除了根)
conda remove -n envname --all
删除一个单一的环境,但我常常用于安装specifiy包或测试,所以我会经常结束了创建多个新环境5-10个环境,并且将它们一个接一个地删除是一种痛苦。是否有一种简单的方法(用于Windows)删除除根环境之外的所有环境?
卸下envs
子目录驻留内conda
做工作内的所有目录。
根据我的评论,您可以使用一个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
不是最优雅的答案。但我只会复制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 ...
命令。
也许你可以尝试像'conda info --envs'这样的东西,并获取环境列表并使用'conda remove --name envname --all'创建一个通过该列表的循环。显然你需要避免你的根环境。 – Ringil
@Ringil - 如果没有“便利选项”我正在寻找什么,你有任何想法如何做到这一点,并把选项与Windows? – MSeifert