我想在我的 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
Run Code Online (Sandbox Code Playgroud)
更新了环境:
$ conda env update -n myenv -f environment.yaml
...
plink-1.90b4-h 100% |#################| Time: 0:00:00 1.63 MB/
Run Code Online (Sandbox Code Playgroud)
一个特定的(最新)版本“1.904b4-h”被拉出,但这似乎被截断了,并不能准确反映 conda 包版本。我将如何使用 conda 期望的版本字符串更新环境?
我发现的一种方法是用于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
}
]
Run Code Online (Sandbox Code Playgroud)
您可以省略--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
Run Code Online (Sandbox Code Playgroud)
注意:对于您的脚本:conda list无论是否找到包,始终以代码 0 退出。
然后您可以使用确切版本修改 environment.yaml 文件:
$ 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
}
]
Run Code Online (Sandbox Code Playgroud)