python - 如何让 `conda env list` 隐藏环境而不删除它?

标签 python conda

我在尚未激活的文件夹中有一个虚拟环境。运行 conda env list不会列出这个环境。
但是,我第一次用Conda激活环境后,现在每次运行conda env list将包括此环境。
有没有办法忽略 conda env list 中的环境? ,而不删除它(因为这会删除整个文件夹)?
我想保留文件夹而不删除它,也不想每次都列出它。

最佳答案

AFAIK,无法通过配置或其他开箱即用的选项来指定要被 conda env list 忽略的特定环境。命令。但是,如果我们深入了解 Conda 如何生成此列表,我们至少可以实现一个解决方法。
Conda 用户环境跟踪
Conda 通过两种方式跟踪环境:

  • 位于 envs_dirs 中任何一个的环境自动发现目录。您可以查看 conda config --show envs_dirs查看包含哪些目录。这样的环境在 conda env list 中不会被忽略不改变内部结构 conda-env工作(即,您必须 fork conda 代码并添加新功能)。
  • 每当用户激活环境时,它都会被添加到用户特定的跟踪文件中,即,
    ~/.conda/environments.txt
    
    哪里~是用户主目录。清除您希望隐藏的环境文件应该从 conda env list 中删除环境。输出,至少直到它再次被激活。

  • 自动化解决方法示例
    如果您想要更自动化的清除,您可以在 shell 初始化文件中包含一行(例如, .bash_profile )以使用类似 sed 的内容从此文件中删除条目和一个正则表达式来匹配您希望省略的环境。
    作为一个具体的例子,我作为 Snakemake 用户经常遇到这个问题。 Snakemake 自动生成 Conda 环境并使用它们在可重现 (-ish) 上下文中运行代码。这些环境都是在 .snakemake/ 下生成的目录并最终开始主宰我的 conda env list输出。这绝对是一个麻烦,因为我从来没有打算手动激活这些环境中的任何一个,而且它们都是以哈希命名的,所以实际上不可能通过前缀识别它们的内容。
    要自动清除这些,我可以将以下内容添加到我的 .bashrc.bash_profile :
    sed -i '/\.snakemake/d' ~/.conda/environments.txt
    
    这仍然会导致暂时显示这些自动生成的环境,但每次新 shell 启动时它们都会被清除。希望这种短暂的情况不是主要的麻烦,否则我想对此更有创意的解决方案也是可行的,例如,每当文件被更改时触发清除操作。

    关于python - 如何让 `conda env list` 隐藏环境而不删除它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64590097/

    相关文章:

    Python 与 Jinja 验证

    python - 如何确定安装 conda 软件包所需启用的 channel ?

    java - 使用Conda打包一组JARS

    python - 导入错误: cannot import name write_dot

    python-3.x - Conda:UnicodeEncodeError: 'charmap' 编解码器无法对位置 644 中的字符 '\u2580' 进行编码:字符映射到 <undefined>

    python - PackagesNotFoundError : The following packages are not available from current channels (ngram)

    anaconda - 如何解决 Anaconda 和 Conda 更新 NoBaseEnvironmentError?

    python - 无法让我的脚本向右滑动按钮

    python - 最新 python 更新后读取长路径(>256 个字符)的文件时出现问题

    python - 如何检查正则表达式是否完全匹配字符串,即 - 字符串不包含任何额外字符?