我知道我可以用
删除单个环境 conda remove -n envname --all
但是我经常创建多个新环境来安装特定的软件包或对其进行测试,因此我经常以5-10个环境结束,并且将它们相互删除是一件痛苦的事。是否有一种简单的方法(对于Windows)删除除根环境之外的所有环境?
答案 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