Лучшая практика для установки зависимостей? - PullRequest
5 голосов
/ 02 мая 2011

Я думаю о хорошем способе доставки моего приложения, которое представляет собой пакет Python. Установить мой пакет легко, используя пакет pythons distutils.

Проблема заключается в зависимостях, на которые опирается мой пакет. Если зависимости являются пакетами Python, я могу снова легко разобраться с ними, используя distutils, но не пакеты Python? Некоторые из них даже требуют большой осторожности при их сборке и установке, так как необходимо установить очень специальные флаги компилятора и так далее ...

Если я хочу автоматизировать процедуру установки для пользователя, как лучше всего это сделать?

  1. Написание файла make, который загружает и устанавливает зависимости
  2. Напишите скрипт, который устанавливает зависимости
  3. Нет автоматизации лучше. просто напишите руководство, которое говорит пользователю, как установить Зависимости
  4. ???

Спасибо заранее за любой ответ или предложение

Ответы [ 2 ]

5 голосов
/ 02 мая 2011

У нас есть проект с именем Kivy (http://kivy.org/), у которого точно такая же проблема. На ранней стадии мы сделали пакет «все в одном», который включает каждую настройку всех зависимостей. Однако у пользователя было много кнопок «Далее>», которые нужно нажимать ... для каждой операции (Windows). Так что теперь нам удалось позаботиться о зависимостях.

За исключением связанных с linux (поскольку все наши deps уже упакованы в "linux"), мы применили подход к управлению так называемым zip-файлом "portable-deps" для каждой платформы. И тогда у нас есть скрипт, который:

  1. Скачать ZIP-файл portable-deps
  2. Включите последнюю версию нашего проекта
  3. Добавить скрипт запуска в корневой каталог
  4. Zip корневой каталог и переименование zip в проект -. Zip

С особым случаем для MacOSX, где zip - это dmg с небольшим пользовательским интерфейсом.

Хорошая часть заключается в том, что пользователю не нужно заботиться о deps, и разработчики точно знают, какие двоичные файлы поставляются с проектом:)

Для информации у нас есть команды build_portable для distutils:

4 голосов
/ 02 мая 2011

Самая важная вещь, которая поможет вам принять решение, - это рассмотреть свою аудиторию.

Они технически склонны и, вероятно, будут удобны после инструкций, определяющих, как самим строить зависимости?Если это так, переходите к (3).Если нет, то написание сценария Python или сценария оболочки или make-файла для автоматизации задачи может быть подходящим вариантом.Выберите то, что вам удобнее всего писать.

...