如何确定已安装的conda软件包的确切软件版本?

时间:2018-09-25 19:11:11

标签: python conda

我想在我的conda环境文件中指定确切的版本。我已经安装了最新版本,方法是在我的environment.yaml中添加未版本化的条目,然后再添加conda env update

# environment.yaml
channels:
  - conda-forge
  - bioconda
  - r
  - defaults
dependencies:
  - gawk=4.2.1
  - plink # new package -- get the latest

通过以下方式更新环境:

$ conda env update -n myenv -f environment.yaml
...
plink-1.90b4-h 100% |#################| Time: 0:00:00   1.63 MB/

一个特定的(最新)版本“ 1.904b4-h”被拉出,但是似乎被截断了,并且不能完全反映一个conda软件包的版本。我该如何使用conda期望的版本字符串更新环境?

1 个答案:

答案 0 :(得分:1)

我发现的一种方法是使用conda list生成环境中包含的所有软件包的列表(可以选择使用-f将其过滤为特定的软件包,在这种情况下,“ plink“):

$ conda list -n myenv -f plink --json
[
  {
    "base_url": null, 
    "build_number": 2, 
    "build_string": "h0a6d026_2", 
    "channel": "bioconda", 
    "dist_name": "plink-1.90b4-h0a6d026_2", 
    "name": "plink", 
    "platform": null, 
    "version": "1.90b4", 
    "with_features_depends": null
  }
]

还有一个非json输出选项,它在外观上比较容易,但可能需要grepping / awk'ing:

$ conda list -n genomics-py36 -f plink
# packages in environment at /home/foo/envs/myenv:
#
plink                     1.90b4               h0a6d026_2    bioconda

注意:对于您的脚本:conda list始终以代码0退出,无论是否找到软件包。

然后,您可以使用正确的版本来修改environment.yaml文件:

# environment.yaml updated
channels:
  ...
dependencies:
  ...
  - plink=1.90b4
  ...