#python #conda #conda-build
#python #conda #conda-build
Вопрос:
Я хотел бы иметь единый рецепт для сборки всех моих отдельных пакетов python в моем репозитории. (Здесь их несколько.) Вот как структурирован репозиторий:
repo
|--package1
|--setup.py
|--package2
|--setup.py
|--package3
|--setup.py
|--recipe
|--meta.yaml
Я хотел бы собрать каждый пакет следующим образом:
conda build recipe/ --variants "{'package':['package1','package2','package3']}"
Это должно позволить мне получить пакет и соответствующим образом указать путь в meta.файл yaml:
source:
path: ../{{ package }}
- Можно ли получить доступ к данным вариантов из рецепта?
- Если нет, есть ли альтернативы для достижения этой цели?
Комментарии:
1. Есть способ добиться этого, используя варианты рецептов и «селекторы» внутри
meta.yaml
. Но я не рекомендую это. Более стандартная схема заключается в том, чтобы просто поддерживать отдельный рецепт для каждого пакета, расположенный в собственном исходном коде пакета. Например,repo/package1/conda-recipe
, и т.д.repo/package2/conda-recipe
Затем вы можете собрать их все сразу с помощьюconda build package1/conda-recipe package2/conda-recipe ...
.2. Причина, по которой ваша схема не рекомендуется, заключается в том, что обычно разные упаковки будут иметь существенно разные рецепты. Например, их номера версий и требования к сборке обычно будут отличаться. То же самое для всего , что есть в
about
разделеmeta.yaml
. Теоретически, можно было бы сделать ВСЕ поляmeta.yaml
выборочно включенными / отключенными с помощью «селекторов» и / или шаблонов jinja, но результат будет излишне сложным. Проще вести отдельный рецепт для каждой упаковки. В идеале вы должны хранить каталог рецептов в собственном исходном коде пакета.