У меня есть несколько проектов python, которые зависят друг от друга. У меня разные версии релизов для каждого проекта, и разные проекты могут зависеть от разных версий релиза конкретного проекта. Я хотел бы создать свой собственный репозиторий conda на внутреннем сервере, где я могу продвигать выпуски этих проектов в виде пакетов conda, а другие проекты могут установить нужную версию. Это возможно? Если да, то как?
Как я могу разместить собственный приватный репозиторий?
Ответ 1
Вы можете использовать специальный канал conda в качестве своего частного репо. Важнейшими шагами являются использование "conda build" для создания пакета conda, затем копирование этого пакета в ваш собственный канал (каталог) и теперь запуск индекса conda в этом каталоге. Затем вы можете установить пакеты с этого канала, используя "conda install -c".
Пример, более подробно, предположим, что linux-64:
- Создайте канал:
mkdir -p /tmp/my-conda-channel/linux-64
-
Теперь предположим, что у вас есть проект с именем "abc" с meta.yaml и build.sh с некоторой версией X. Теперь вы его создаете:
conda build abc
-
Это создаст файл tar.bz2 в вашем конд-сервере. Например: ~/miniconda3/conda-bld/linux-64/abc-X-py35_0.tar.bz2. Скопируйте этот файл на свой канал:
cp ~/miniconda3/conda-bld/linux-64/abc-X-py35_0.tar.bz2 /tmp/my-conda-channel/linux-64/
-
Теперь проиндексируем его:
conda index /tmp/my-conda-channel/linux-64/
Теперь вы загрузили этот пакет на свой собственный канал. Вы можете установить его в любой из ваших окружений conda, выполнив следующие действия:
conda install -c file://tmp/my-conda-channel/ abc=X
Где, напомним, X - это версия, поэтому после размещения большего количества версий на вашем канале вы можете установить определенные версии.
Если у вас есть проект, который зависит от X-версии "abc", мы просто добавляем его в эти проекты meta.yaml. Пример:
package:
name: some-other-project
version: 0.1
requirements:
build:
- abc X
...
Как только вы создали этот канал, вероятно, неплохо добавить его в ваш .condarc файл, чтобы он автоматически искался. Например:
channels:
- file://tmp/my-conda-channel/
- defaults