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