Назад | Перейти на главную страницу

Упаковка программного обеспечения Python с настраиваемыми зависимостями

Я ищу хороший способ упаковать приложение Python, которое будет развернуто на сервере Debian.

Само приложение зависит от некоторых модулей, которые не включены в базовый репозиторий Debian, хотя они могут появиться в будущем. Это создает некоторые проблемы ... Я полагаюсь на некоторые исправления для этих модулей. Если однажды будет установлен исходный модуль, приложение сломается. Однако, если я установлю все необходимое в virtualenv только для этого приложения я теряю возможность обновлять сам Python (в случае обновлений безопасности).

Третий вариант - переименовать мой форк восходящего модуля и рассматривать его как совершенно отдельный. Но это означало бы изменение кода (не так много работы, но он уже не будет таким чистым / универсальным).

Есть ли другие варианты, которые я пропустил? Есть ли какие-то плюсы / минусы, которые я не увидел в решениях выше?

Virtualenv по-прежнему будет получать обновления Python; стандартная библиотека и интерпретатор связаны символическими ссылками. Вам действительно нужно беспокоиться об обновлениях модулей python, установленных в virtualenv, в том числе тех, которые могли быть отправлены дистрибутивом. Поэтому я рекомендую создавать свои собственные пакеты для настраиваемых модулей и позволять приложению сломаться, если исходный модуль получит обновление безопасности.

Попробуйте установить свои пользовательские модули в другое место (за пределами обычного sys.path местоположение), а затем добавьте новое место установки в свой $ PYTHONPATH.

Это может избежать проблемы, которая может возникнуть, если установлена ​​исходная версия ваших исправленных модулей, что приведет к поломке вашей системы.