Стадион conda ОКР от.и YAML в автономном режиме


Я хотел бы создать среду conda из a .файл yaml на автономной машине (то есть без доступа в интернет). На онлайн-машине это работает отлично: conda env create-f окружающая среда.ямл

Однако он не работает на автономной машине, так как пакеты тогда не найдены. Как мне это сделать?

Если это невозможно, есть ли какой-либо другой простой способ получить мою полную среду conda на автономную машину (включая установленные conda и pip пакеты)?

Перебирать пакеты один за другим, чтобы установить их из файлов .tar.bz2, работает, но довольно громоздко, поэтому я хотел бы избежать этого.

2 2

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-загрузки, Если вам нужно указать другую операционную систему, а для некоторых пакетов двоичные файлы недоступны. Это было нормально для меня сейчас, как и целевая машина некоторые характеристики, но могут быть проблемой в будущем, поэтому я планирую рассмотреть решение, предложенное Антоном.