Распространение пакета python вместе с зависимостями модуля с использованием RPM

У меня есть несколько приложений Python, состоящих из скриптов / модулей, которые должны быть упакованы и развернуты как RPM.

Более хитрый момент заключается в том, что каждое приложение должно распространяться вместе со всеми зависимостями модуля Python, и они должны использоваться в предпочтении перед всеми, которые установлены во всей системе.

Целевые хосты для некоторых из этих RPM имеют ограниченный доступ к сети, поэтому RPM должны содержать все необходимое для запуска приложения, а не загружать что-либо во время развертывания.

Я смотрел на упаковку и распространениеvirtualenv, но перемещение virtualenv, похоже, не очень хорошо поддерживается.

Я смотрел наzc.buildout, но обнаружил, что документация отсутствует. Я мог видеть, как загружать зависимости во время разработки, но не как распространять их как часть более крупного приложения. Возможно, для разных приложений требуются разные версии одного и того же модуля, поэтому их не следует устанавливать в масштабе всей системы.

Другая проблема заключается в том, что любые сценарии python в приложении необходимо модифицировать для использования другого sys.path во время разработки и после развертывания, я не мог увидеть очевидный способ обойти это.

Есть предложения о том, как лучше всего этого достичь? Идеальное резюме рабочего процесса с точки зрения разработчика будет выглядеть так:

скачать исходный код приложениязапустить скрипт для извлечения определенных зависимостей модуля, если они отсутствуют (возможно, используязернышко)запустить скрипт для сборки приложения Python и упаковать его и все загруженные зависимости в RPM

Конечный RPM должен быть установлен и запущен на хосте без доступа к сети и только с установленным интерпретатором Python.

Ответы на вопрос(1)

Ваш ответ на вопрос