Distribuindo um pacote python junto com as dependências do módulo usando RPM
Eu tenho vários aplicativos python consistindo de scripts / módulos que devem ser empacotados e implantados como RPMs.
A parte mais complicada é que cada aplicativo deve ser distribuído junto com todas as dependências do módulo python, e elas devem ser usadas de preferência a todas as que estão instaladas em todo o sistema.
Os hosts de destino para alguns desses RPMs têm acesso limitado à rede, portanto, os RPMs devem conter todo o necessário para executar o aplicativo, em vez de fazer o download de qualquer coisa no momento da implantação.
Eu olhei para embalagem e distribuição de umvirtualenv, mas realocar um virtualenv não parece ser bem suportado.
Eu olhei parazc.buildout, mas encontrou a documentação a faltar. Eu pude ver como baixar dependências durante o desenvolvimento, mas não como distribuí-las como parte de um aplicativo maior. É possível que aplicativos diferentes exijam versões diferentes do mesmo módulo, portanto, eles não devem ser instalados em todo o sistema.
Outro ponto problemático é que quaisquer scripts python no aplicativo precisam ser modificados para usar um sys.path diferente durante o desenvolvimento e após a implantação, não consegui ver uma maneira óbvia de contornar isso.
São sugestões sobre a melhor forma de conseguir isso? Um resumo ideal do fluxo de trabalho do ponto de vista de um desenvolvedor seria semelhante a:
baixar fonte de aplicativoexecutar script para buscar dependências específicas do módulo, se não estiver presente (talvez usandopip)execute o script para construir o aplicativo python e empacote-o e todas as dependências baixadas no RPMO RPM final deve então ser instalável e executado em um host sem acesso à rede e somente um interpretador python instalado.