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

问题描述 投票:0回答:4

我想在我的 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 期望的版本字符串更新环境?

python conda version
4个回答
17
投票

我发现的一种方法是使用

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
标志以获得更简单的输出,这对眼睛来说更容易,但可能需要 grep/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
  ...

3
投票

我认为

conda list | grep xxx
会解决你的问题。

鉴于: 我们需要检查 PyTorch 版本:

conda list | grep PyTorch

# Return
pytorch                   1.10.0          py3.8_cuda11.3_cudnn8.2.0_0    pytorch
pytorch-mutex             1.0                        cuda    pytorch
torchaudio                0.10.0               py38_cu113    pytorch
torchvision               0.11.1               py38_cu113    pytorch

0
投票

请注意,

conda list
,就像
grep
一样,对包名称使用子字符串搜索。因此,如果您想确保获得完全匹配的包名称的版本,那么您需要获取 JSON 格式的
conda list
结果并使用
jq
解析它们,例如因此 - 对于
pandas
:

$ conda list pandas --json | jq -r '.[] | select(.name=="pandas") | .version'
1.5.3

...在有 3 个软件包(随 pip 安装,默认情况下也包括

conda list
)的环境中,其名称中包含“pandas”子字符串:

$ conda list pandas
# Name                    Version                   Build  Channel
geopandas                 0.14.0                   pypi_0    pypi
pandas                    1.5.3                    pypi_0    pypi
pandas-profiling          3.6.6                    pypi_0    pypi

0
投票

如果只有conda环境的路径可用,则使用:

conda list -p /path/to/conda/env

例如:

conda list -p /mnt/home/foo/.conda/envs/env-1a84d20bd797f04a477f57f9157048ae

或者对于特定的包,例如

pandas
,添加
grep
,如下所示:

conda list -p /mnt/home/foo/.conda/envs/env-1a84d20bd797f04a477f57f9157048ae | grep pandas

输出示例:

pandas                    2.2.3           py313ha87cce1_1    conda-forge
© www.soinside.com 2019 - 2024. All rights reserved.