我在尚未激活的文件夹中有一个虚拟环境。运行 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/