我正在尝试编写一个bash脚本,其中包括停用和删除conda环境。这是一个示例,remove_env.sh
:
#!/bin/bash
# Get the conda command available in bash
eval "$(conda shell.bash hook)"
# Deactivate environment
conda deactivate
# Remove environment
conda remove --name my_env --all --yes
必须停用该环境才能删除它。
不幸的是,这不起作用。我在终端中执行此操作:
$ conda activate my_env
$ ./remove_env.sh
CondaEnvironmentError: cannot remove current environment. deactivate and run conda remove again
我认为问题与forking有关-本质上,环境在一个进程中被停用,但是remove调用在另一个未禁用环境的进程中运行。但是我不确定。
一些注意事项:
source remove_env.sh
-我必须能够使用./remove_env.sh
#!/bin/bash
# Get the conda command available in bash
eval "$(conda shell.bash hook)"
# Deactivate and remove environment
conda deactivate && conda remove --name my_env --all --yes
conda activate my_env
中调用命令~./bashrc
答案 0 :(得分:0)
感谢乔纳森(Jonathan)在评论中的回答。你是完全正确的,我完全忽略了conda手册中的那个蓝色便笺。我能够做到这一点:
#!/bin/bash
# Get the conda command available in bash
eval "$(conda shell.bash hook)"
# Activate the environment
conda activate my_env
# Deactivate environment
conda deactivate
# Remove environment
conda remove --name my_env --all --yes
我认为无论您conda activate
有无参数都可以。
答案 1 :(得分:0)
或者,使用Conda的run
工具,可以避免手动激活。也就是说,类似
#!/usr/bin/env conda run bash
conda env remove -n my_env -y