停用所有 conda 环境

时间:2021-07-19 13:33:37

标签: conda

当一个 conda 环境被激活时,conda 会记住之前激活的环境。例如,如果没有环境被激活,调用 conda activate foo 然后调用 conda deactivate 导致没有环境处于活动状态。但是,调用 conda activate foo,然后是 conda activate bar,然后是 conda deactivate 会导致“foo”环境处于活动状态。 Conda 将每个环境在激活时放在一个堆栈上,而取消激活只会从堆栈中弹出一个项目。

在使用 bash 版本的 conda 时,如何停用所有 conda 环境?

例如,如果我有一个重建环境的脚本,它需要确保该环境当前未处于活动状态,因此它应该停用所有环境。我可以在脚本的顶部放置十个左右的 conda deactivate ,这可能就足够了,但我正在寻找不那么笨拙的东西。

3 个答案:

答案 0 :(得分:1)

我不知道是否存在任何直接路由,conda deactivate 没有任何记录的命令行参数,并且 conda --help 在我的系统上报告的其他命令可能对此有所帮助。

>

对您来说,在 bash 中的一种方法可能是滥用 conda 将 CONDA_PREFIX 设置为当前活动环境的路径这一事实。因此,您可以停用,直到不再设置该变量:

while [ ! -z $CONDA_PREFIX ]; do conda deactivate; done

答案 1 :(得分:1)

conda 环境堆栈的深度存储在环境变量 CONDA_SHLVL 中。多次运行 conda deactivate 应该会停用所有环境。

for i in $(seq ${CONDA_SHLVL}); do
    conda deactivate
done

答案 2 :(得分:0)

conda 环境的激活意味着您激活的环境是应用程序使用的环境。因此,您在 conda 中始终有一个活动环境(当您停用时,另一个环境会被激活)。

一个可能的选项是激活 conda base(默认)环境,例如 conda activate base(或您希望明确激活的任何其他环境)。您也可以删除不需要的环境。

这是一篇关于这个主题的好帖子:https://towardsdatascience.com/manage-your-python-virtual-environment-with-conda-a0d2934d5195