Conda 删除所有环境(root 除外)
Conda remove all environments (except root)
我知道我可以使用
删除单个环境
conda remove -n envname --all
但我经常创建多个新环境来安装特定包或对其进行测试,所以我通常会得到 5-10 个环境,并且一个接一个地删除它们是一件痛苦的事情。有没有一种简单的方法(对于 windows)删除除根环境之外的所有环境?
根据我的评论,您可以使用一个 conda 命令获取所有环境,然后尝试遍历它并单独删除它们。这是您可以执行此类操作的一种方法。请注意,您应该将 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
删除位于 conda
内的 envs
子目录内的所有目录即可完成工作。这通常在您的用户文件夹 ~
.
~\.conda\envs\
不是最优雅的答案。但我只想从 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 ...
命令。
基于 Mac/Linux 的系统可以删除所有这样的环境。
for i in `conda env list|awk '{print }'|egrep -v 'base|#'|tr '\n' ' '`;do echo $i;conda env remove --name $i;done
我知道我可以使用
删除单个环境 conda remove -n envname --all
但我经常创建多个新环境来安装特定包或对其进行测试,所以我通常会得到 5-10 个环境,并且一个接一个地删除它们是一件痛苦的事情。有没有一种简单的方法(对于 windows)删除除根环境之外的所有环境?
根据我的评论,您可以使用一个 conda 命令获取所有环境,然后尝试遍历它并单独删除它们。这是您可以执行此类操作的一种方法。请注意,您应该将 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
删除位于 conda
内的 envs
子目录内的所有目录即可完成工作。这通常在您的用户文件夹 ~
.
~\.conda\envs\
不是最优雅的答案。但我只想从 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 ...
命令。
Mac/Linux 的系统可以删除所有这样的环境。
for i in `conda env list|awk '{print }'|egrep -v 'base|#'|tr '\n' ' '`;do echo $i;conda env remove --name $i;done