Упаковка программного обеспечения Python с пользовательскими зависимостями
Я ищу хороший способ упаковать приложение Python, которое будет развернуто на сервере Debian.
Само приложение зависит от некоторых модулей, которые не включены в базовый репозиторий Debian, хотя они могут появиться в будущем. Это создает некоторые проблемы... Я зависим от некоторых патчей для этих модулей. Если оригинальный модуль будет установлен один день, приложение будет сломано. Однако, если я установлю все, что мне нужно, в virtualenv
только для этого приложения я теряю возможность обновления самого Python (в случае обновления безопасности).
Третий вариант - переименовать мой форк модуля upstream и просто рассматривать его как совершенно отдельный. Но это будет означать изменение кода (не так много работы, но это уже не будет так чисто / универсально).
Есть ли другие варианты, которые я пропустил? Есть ли плюсы / минусы, которые я не видел в решениях выше?
2 ответа
Попробуйте установить свои собственные модули в другое место (за пределами обычного sys.path
местоположение), а затем добавив новое место установки в $ PYTHONPATH.
Это может избежать проблемы, которая может возникнуть, если установлена апстримная версия ваших исправленных модулей, что приведет к поломке вашей системы.
Virtualenv все еще получит обновления Python; стандартная библиотека и интерпретатор являются символическими ссылками. Вам действительно нужно беспокоиться об обновлениях модулей python, установленных в virtualenv, включая те, которые могли быть поставлены дистрибутивом. Поэтому я рекомендую создавать собственные пакеты для настроенных модулей и разрешать разрыву приложения, если исходный модуль получает обновление безопасности.