Как определить точную версию программного обеспечения установленного пакета 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?


person init_js    schedule 25.09.2018    source источник


Ответы (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
  ...
person init_js    schedule 25.09.2018