Создание постоянной (фиксированной) среды conda - PullRequest
0 голосов
/ 14 июля 2020

Мне нужна постоянная среда с фиксированными библиотеками, которую пользователи могут установить для использования специального программного пакета c (scientifi c, с открытым исходным кодом) (с минимальными вариантами финансирования). Эти библиотеки не нуждаются в обновлении в обозримом будущем. Мне не удалось использовать стандартный файл .yml для этой цели из-за определенной комбинации c библиотек, которые я использую (мне нужно python2 с очень конкретными c версиями VTK, Mayavi и PyQt4 для правильной работы ; они не будут работать, если я вслепую установлю последние версии)

Я пробовал conda list --explicit, и какое-то время это работало очень хорошо (я составил список как для macOS, так и для linux). Однако сегодня я был уведомлен пользователем, что этот список conda больше не работает для них (отображается как ошибка HTTP 404 при установке среды на их новый компьютер). После дальнейшего расследования выяснилось, что это произошло потому, что разработчик удалил один из файлов, на которые я ссылался (Mayavi конкретной c версии).

Если разработчики просто удаляют старые пакеты по прихоти, это кажется победить всю цель, для которой я использовал conda list --explicit. Что еще я могу сделать?

Я подумал, что мне, возможно, придется разместить эти c библиотеки где-нибудь с инструкциями для пользователей по загрузке и правильной установке? Обратной стороной является то, что для этого потребуется ~ 2 ГБ памяти. Вдоль этой строки logi c я также пробовал conda pack, но получил сообщение об ошибке, что он не может проанализировать pip из библиотек conda. Любая помощь будет чрезвычайно оценена.

Обновление 1: Было предложено изучить файл requirements.txt. С тех пор я создал его через conda list --export > requirements.txt. Однако при использовании его для создания новой среды (через conda create --name <envname> --file requirements.txt) я получаю следующую ошибку:

Solving environment: failed

PackagesNotFoundError: The following packages are not available from current channels:

  - openmpi==1.6.3=1
  - qt==4.8.7=1
  - pyqt==4.11.4=py27_4

Что странно, так как это все anaconda/osx-64 каналов (которые я активировал)

(... очистка предыдущих обновлений)

Обновление 4: В комментариях мне сообщили, что requirements.txt функционально эквивалентен conda list --explicit. Итак, теперь моя проблема резюмируется:

  1. conda list --explicit: требует, чтобы разработчики держали свои библиотеки в сети. Однако, поскольку они, как правило, удаляют старые библиотеки по прихоти, этот метод нестабилен для длительного использования.

  2. pip freeze > requirements.txt: фактически не добавляет все зависимости в среде в текстовый файл ; например, PyQt4 и Qt4 полностью отсутствовали (я до сих пор не понимаю, почему).

  3. conda list --export > requirements.txt: это показывает все зависимости в текстовом файле, но затем некоторые из них зависимости не могут быть найдены при повторной установке среды через файл requirements.txt (например, PackagesNotFoundError: The following packages are not available from current channels: openmpi==1.6.3=1, qt==4.8.7=1, pyqt==4.11.4=py27_4)

  4. с указанием хостинга c tarballs: это мой единственный вариант, тогда заключается в том, чтобы загрузить все эти зависимости самостоятельно (точные версии каждой библиотеки в формате tar.gz и предоставить их пользователю. Обратной стороной является то, что это займет более 2 ГБ памяти. Я также должен повторить, что это для open-source scientifi c, поэтому финансирование подобных вещей является проблемой.

    Может ли кто-нибудь порекомендовать какие-либо веб-сайты, на которых можно разместить коллекцию архивов tar (или мне стоит разместить их на рабочей станции с s sh инструкции, et c)? Кроме того, какие инструкции мне нужно выполнить, чтобы воспроизвести среду conda из папки tarballs?

...