Стадион conda ОКР от.и YAML в автономном режиме
Я хотел бы создать среду conda из a .файл yaml на автономной машине (то есть без доступа в интернет). На онлайн-машине это работает отлично: conda env create-f окружающая среда.ямл
Однако он не работает на автономной машине, так как пакеты тогда не найдены. Как мне это сделать?
Если это невозможно, есть ли какой-либо другой простой способ получить мою полную среду conda на автономную машину (включая установленные conda и pip пакеты)?
Перебирать пакеты один за другим, чтобы установить их из файлов .tar.bz2, работает, но довольно громоздко, поэтому я хотел бы избежать этого.
2 ответа:
Если вы можете использовать pip для установки пакетов, вы должны взглянуть на
devpi
, в частности, его сервер.devpi
может кэшировать пакеты, обычно устанавливаемые из PyPI, поэтому только при первой установке он фактически извлекает их. Вы должны настроитьpip
для получения пакетов с сервера devpi.Поскольку вы не хотите перечислять все пакеты и их зависимости вручную, вы должны, на машине, подключенной к интернету:
- установите сервер devpi (у меня есть что работает в контейнере Docker)
- запустите установку
- изучите репозиторий devpi и соберите оттуда все файлы
.tar.bz2
и.whl
(Возможно, вы сможете смолить все это)На несвязной машине:
- установите сервер и клиент devpi
- используйте devpi клиента, чтобы загрузить все пакеты, которые вы собрали (используя
devpi upload
) к devpi сервера- убедитесь, что у вас типун настроен, чтобы посмотреть на devpi сервер
- запустите
pip
, он найдет все пакеты на локальном сервере.
devpi
имеет небольшую кривую обучения, которую уже стоит пройти из-за ускорения и возможности устанавливать частные пакеты (т. е. не загруженные в PyPI) как нормальную зависимость, просто генерируя пакет и загружая его на ваш локальный сервер devpi.
Я думаю, что решение Антона выше довольно хорошо, но на всякий случай кто-нибудь заинтересован в простом решении, которое сработало для меня:
Я впервые создал А.yaml-файл, указывающий среду с помощью conda env export > file.и YAML. Следуя инструкциям на http://support.esri.com/en/technical-article/000014951 , я автоматически загрузил все необходимые установочные файлы для установленных пакетов conda и создал канал из файлов. Для этого я просто адаптировал код из ссылки выше для работы с my .файл yaml вместо файла списка conda, который они использовали. Кроме того, я автоматически загрузил необходимые файлы для установленных пакетов pip, прокрутив записи pip в цикле .файл YAML и используя скачать pip для загрузки каждого из них. Кроме того, я автоматически создал отдельные списки требований conda и pip из.файл YAML. Затем я создал среду, используя стадион conda создать с автономной флаг, файл с стадион conda требования и мой пользовательский канал. Наконец, я установил требования pip с помощью pip install с файлом требований pip и папкой, содержащей файлы установки pip для опции -- find-links.
Это сработало для меня. Единственная проблема заключается в том, что вы можете загружать двоичные файлы только с помощью pip-загрузки, Если вам нужно указать другую операционную систему, а для некоторых пакетов двоичные файлы недоступны. Это было нормально для меня сейчас, как и целевая машина некоторые характеристики, но могут быть проблемой в будущем, поэтому я планирую рассмотреть решение, предложенное Антоном.