【问题标题】:How can I see the creation dates for my conda environments?如何查看我的 conda 环境的创建日期?
【发布时间】:2021-09-08 20:28:08
【问题描述】:

我为图像处理任务创建了四个不同版本的conda virtual environments (envs)。每个 env 包括 GDALOpenCV,以及一些相关库和依赖项的子集。我想将我的图像处理环境列表剔除到最近创建的一个,它将拥有我使用的最完整的库集。但我不记得创建环境的顺序了。

有没有办法查看单个 env 的创建日期,或者我的所有 conda env 的创建日期列表?

更新

这是@Timur Shtatland 建议的命令的输出

$ conda env list -v -v -v | grep -v '^#' | perl -lane 'print $F[-1]' | xargs ls -lrt1d
$ miniconda3/envs/opencv2_imgproc
$ miniconda3/envs/GDAL_OSGEO_env

【问题讨论】:

    标签: python virtualenv conda


    【解决方案1】:

    Conda history 文件

    除了文件/文件夹日期,Conda 还在conda-meta/history 文件中记录了与每个环境文件夹相关的所有环境更改的历史记录,因此也可以查阅。所有条目都以日期戳 (==> YYYY-MM-DD HH:MM:SS <==) 开头,因此假设第一个条目对应于 env 创建,可以执行类似的操作

    #!/bin/bash
    
    for env_hist in path/to/envs/*/conda-meta/history; do
        env_prefix=$(dirname $(dirname $env_hist))
        echo "$(head -n1 $env_hist) $env_prefix"
    done | sort
    

    打印类似的东西

    ==> 2020-09-28 16:12:49 <== path/to/envs/pymc39
    ==> 2020-11-08 18:15:26 <== path/to/envs/bioc_3_12
    ==> 2020-11-22 17:19:08 <== path/to/envs/snakemake_5_29
    ==> 2021-01-23 00:08:33 <== path/to/envs/pymc3_11
    ==> 2021-01-23 00:12:53 <== path/to/envs/jupyter
    ==> 2021-03-09 22:50:38 <== path/to/envs/multiqc
    ==> 2021-03-24 13:20:07 <== path/to/envs/grayskull
    ==> 2021-04-05 23:40:01 <== path/to/envs/snakemake_6_1
    

    【讨论】:

    • 您可以使用命令conda env list 获取到您的环境的路径。在我的安装中,感兴趣的文件位于/home/{username}/miniconda3/envs/{env_name}/conda-meta/history
    【解决方案2】:

    使用conda env list 将 conda 环境列表和 env 路径打印到 STDOUT。跟随 ls -lrt1d &lt;env paths&gt;,它将按时间排序的路径打印到 STDOUT:

    conda env list
    # conda environments:
    #
    # base                  *  /Users/user_name/miniconda3
    # ...
    # bioperl                  /Users/user_name/miniconda3/envs/bioperl
    # biopython                /Users/user_name/miniconda3/envs/biopython
    # ...
    
    ls -lrt1d env_paths
    # Example:
    # ls -lrt1d /Users/user_name/miniconda3/envs/bio*
    

    把它们放在一起:

    conda env list | grep -v '^#' | perl -lane 'print $F[-1]' | xargs ls -lrt1d
    

    【讨论】:

    • 在我的 Mac 上,这会返回一个环境列表,但没有任何日期信息。列表中项目的顺序是否表示创建顺序?
    • @someguyinafloppyhat 不,conda env list 返回按 ASCII 排序的环境。然后我必须复制路径并将它们用作ls -lrt1d 的参数,它确实按时间对它们进行反向排序。
    • @someguyinafloppyhat 我将所有内容合并到一个命令中并更新了答案。
    • @someguyinafloppyhat 好的,我能够重现并解决问题。我认为这是由于 macOS ls(这是 mac 上的标准)和 GNU ls(我使用的)的差异造成的。只需将-1(一个)选项删除到ls。更正后的命令(用 macOS ls 测试)是:conda env list -v -v -v | grep -v '^#' | perl -lane 'print $F[-1]' | xargs /bin/ls -lrtd
    • 是的,我可以确认 Timur 的更新命令会生成包含日期和时间的环境列表。感谢更新。您的答案和 @merv 的答案同样有效,尽管 Timur 的方法更简洁。
    猜你喜欢
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    • 1970-01-01
    相关资源
    最近更新 更多