Distribuir un paquete de Python junto con las dependencias de los módulos utilizando RPM

Tengo varias aplicaciones de Python que consisten en scripts / módulos que deben empaquetarse e implementarse como RPM.

La parte más complicada es que cada aplicación debe distribuirse junto con todas las dependencias de los módulos de Python, y estas deben usarse con preferencia a las instaladas en todo el sistema.

Los hosts de destino para algunos de estos RPM tienen acceso limitado a la red, por lo que los RPM deben contener todo lo necesario para ejecutar la aplicación, en lugar de descargar cualquier cosa en el momento de la implementación.

He mirado a empaquetar y distribuir unavirtualenv, pero reubicar un virtualenv no parece estar bien soportado.

He miradozc.buildout, pero encontró que faltaba la documentación. Pude ver cómo descargar dependencias durante el desarrollo, pero no cómo distribuirlas como parte de una aplicación más grande. Es posible que diferentes aplicaciones requieran diferentes versiones del mismo módulo, por lo que no deben instalarse en todo el sistema.

Otro punto problemático es que cualquier secuencia de comandos de Python en la aplicación necesita ser modificada para usar un sys.path diferente durante el desarrollo y después de la implementación, no pude ver una manera obvia de evitar esto.

¿Hay sugerencias sobre la mejor manera de lograr esto? Un resumen ideal del flujo de trabajo desde el punto de vista de un desarrollador se vería así:

descargar la fuente de la aplicaciónejecutar un script para obtener dependencias específicas del módulo si no está presente (tal vez usandopipa)ejecute el script para crear la aplicación Python, y empaquetelo y todas las dependencias descargadas en RPM

El RPM final debe ser instalable y ejecutable en un host sin acceso a la red, y solo un intérprete de python instalado.

Respuestas a la pregunta(1)

Su respuesta a la pregunta