Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何让“conda env list”隐藏环境而不删除它?_Python_Conda - Fatal编程技术网

Python 如何让“conda env list”隐藏环境而不删除它?

Python 如何让“conda env list”隐藏环境而不删除它?,python,conda,Python,Conda,我在一个尚未激活的文件夹中有一个虚拟环境。运行conda env list不会列出此环境 但是,在我第一次使用Conda激活环境后,现在每次运行Conda env list时,都会包括此环境 有没有办法忽略conda env list中的环境而不删除它(因为这样会删除整个文件夹)? 我想保留文件夹,但不删除它,也不希望每次Conda都列出它。AFAIK,没有办法通过配置或其他现成的选项来指定特定的环境,以被Conda env list命令忽略。然而,如果我们深入了解Conda是如何生成此列表的,

我在一个尚未激活的文件夹中有一个虚拟环境。运行
conda env list
不会列出此环境

但是,在我第一次使用Conda激活环境后,现在每次运行
Conda env list
时,都会包括此环境

有没有办法忽略
conda env list
中的环境而不删除它(因为这样会删除整个文件夹)?
我想保留文件夹,但不删除它,也不希望每次Conda都列出它。

AFAIK,没有办法通过配置或其他现成的选项来指定特定的环境,以被
Conda env list
命令忽略。然而,如果我们深入了解Conda是如何生成此列表的,我们至少可以实现一种变通方法

用户环境跟踪 Conda以两种方式跟踪环境:

  • 自动发现位于任何
    envs\u dirs
    目录中的环境。您可以检查
    conda config--show envs_dirs
    以查看包含哪些目录。如果不改变
    conda env
    的内部工作方式(即,您必须分叉
    conda
    代码并添加新功能),则此类环境在
    conda env列表中是不可忽略的

  • 每当用户激活环境时,它都会被添加到特定于用户的跟踪文件中,即

    ~/.conda/environments.txt
    
    其中
    ~
    是用户的主目录。清除此要隐藏的环境文件应将该环境从
    conda env列表
    输出中删除,至少在再次激活之前是这样

  • 自动变通示例 如果您想要更自动化的清除,您可以在shell初始化文件(例如,
    .bash\u profile
    )中包含一行,以使用类似于
    sed
    的内容和正则表达式从该文件中删除条目,以匹配您希望省略的环境

    作为一个具体的例子,我经常遇到这个问题,作为一个蛇行用户。Snakemake自动生成Conda环境,并使用它们在可复制(-ish)上下文中运行代码。这些环境都是在
    .snakemake/
    目录下生成的,并最终开始主导我的
    conda env list
    输出。这绝对是一个麻烦,因为我从来没有打算手动激活这些环境中的任何一个,而且它们都是通过哈希命名的,所以实际上不可能通过前缀识别它们的内容

    要自动清除这些内容,我可以将以下内容添加到我的
    .bashrc
    .bash\u配置文件中:

    sed-i'/\.snakemake/d'~/.conda/environments.txt
    

    这仍然会导致暂时显示这些自动生成的环境,但每次新shell启动时,它们都会被清除。希望这种暂时性的情况不会造成太大麻烦,否则我认为更具创造性的解决方案也是可行的,例如,每当文件被更改时触发清除操作。

    不确定我是否理解你的意思,但如果我理解了,你应该创建一个新的环境,而不是使用旧的。嗨@wagnifico,也许我可以详细说明什么不太清楚?你为什么要对康达隐瞒?我不明白这一点。我在文件夹中创建了一些测试环境——我想保留它们,但不想永远看到它们是如何被conda列出的。我能想到的唯一一件事是删除它们,但如果您愿意,您可以在将来重新安装它们。