Как распространять лицензионные пакеты с conda
Conda отлично подходит для распространения двоичных файлов с открытым исходным кодом. Однако для некоторых программ в моей отрасли пользователям необходимо согласиться на получение лицензий или отправить свою электронную почту в веб-форму, прежде чем получить доступ. Я хотел бы, чтобы все использовали conda, есть ли способ для разработчиков по-прежнему использовать conda для распространения такого пакета? Решение, которое так просто, как conda install ...
должно быть возможно.
Наилучшее решение, которое я до сих пор предлагал, - это загрузить пакет tar.bz2, на который пользователь согласился с лицензией, и затем запустить его. conda install package.tar.bz2
, К сожалению, это не устанавливает общедоступные зависимости (скажем, с anaconda.org). Другая альтернатива - пользователи загружают пакет и помещают его в папку conda_bld, но это несколько ручное руководство и требует знаний пользователя об их установке.
1 ответ
Самый простой способ, вероятно, состоит в том, чтобы сделать два пакета, один с реальным пакетом, а другой, который устанавливает все зависимости. Причина в том, что, согласно официальным документам, conda install ./pkg-0.0.0-py27_0.tar.bz2
подразумевает --force
, который не устанавливает никаких зависимостей. Таким образом, вместо этого ваши пользователи могут сделать
conda install -c your-channel pkg-deps
conda install ./pkg-0.0.0-py27_00.tar.bz2
В упаковке pkg-deps
Вы должны перечислить все зависимости фактического пакета, но этот пакет не должен ничего устанавливать. Технически это будет метапакет.
Фактический файл пакета может быть расположен в любом каталоге, когда пользователь загружает его, насколько я знаю, и предоставляется в командной строке. Пользователь не должен помещать пакет в определенный каталог.