У меня есть несколько приложений на основе python, состоящих из скриптов/модулей, которые должны быть упакованы и развернуты как RPM.
Более сложный бит заключается в том, что каждое приложение должно быть распределено вместе со всеми зависимостями модуля python, и их следует использовать в предпочтении всем, которые установлены в системе.
Целевые узлы для некоторых из этих RPM имеют ограниченный сетевой доступ, поэтому RPM должны содержать все необходимое для запуска приложения, а не загружать что-либо во время развертывания.
Я посмотрел на упаковку и распространение virtualenv, но перемещение виртуального файла, похоже, не поддерживается.
Я просмотрел zc.buildout, но обнаружил, что документации не хватает. Я мог видеть, как загружать зависимости во время разработки, но не как распространять их как часть более крупного приложения. Возможно, для разных приложений требуются разные версии одного и того же модуля, поэтому их не следует устанавливать в системе.
Еще одна болевая точка заключается в том, что любые скрипты python в приложении должны быть изменены, чтобы использовать другой sys.path во время разработки и после развертывания, я не видел очевидного способа обойти это.
Есть ли предложения о том, как лучше всего это достичь? Идеальное резюме рабочего процесса с точки зрения разработчика будет выглядеть так:
- скачать источник приложения
- запустите script для получения определенных зависимостей модулей, если их нет (возможно, используя pip)
- запустите script для создания приложения python и упакуйте его и все загруженные зависимости в RPM
Затем окончательный RPM должен быть установлен и запускаться на хосте без сетевого доступа, и установлен только интерпретатор python.