Dystrybucja pakietu Pythona wraz z zależnościami modułów przy użyciu RPM

Mam kilka aplikacji Pythona składających się ze skryptów / modułów, które powinny być spakowane i wdrożone jako RPM.

Bardziej kłopotliwe jest to, że każda aplikacja powinna być dystrybuowana wraz ze wszystkimi zależnościami modułu Pythona, a te powinny być preferowane w stosunku do tych, które są zainstalowane w całym systemie.

Docelowe hosty dla niektórych z tych RPM mają ograniczony dostęp do sieci, więc RPM powinny zawierać wszystko, co jest potrzebne do uruchomienia aplikacji, zamiast pobierać cokolwiek w czasie wdrażania.

Sprawdziłem pakowanie i dystrybucjęvirtualenv, ale przeniesienie virtualenv nie wydaje się być dobrze wspierane.

Obejrzałemzc.buildout, ale brakowało dokumentacji. Mogłem zobaczyć, jak pobierać zależności podczas programowania, ale nie w jaki sposób rozpowszechniać je w ramach większej aplikacji. Możliwe, że różne aplikacje wymagają różnych wersji tego samego modułu, więc nie powinny być instalowane w systemie.

Innym problemem jest to, że wszelkie skrypty Pythona w aplikacji muszą zostać zmodyfikowane, aby podczas tworzenia używać innego sys.path i po wdrożeniu, nie widziałem oczywistego sposobu na obejście tego problemu.

Czy są sugestie, jak najlepiej to osiągnąć? Idealne podsumowanie przebiegu pracy z punktu widzenia dewelopera wyglądałoby tak:

pobierz źródło aplikacjiuruchom skrypt, aby pobrać określone zależności modułu, jeśli nie istnieją (być może używającpypeć)uruchom skrypt, aby zbudować aplikację Pythona i spakuj ją oraz wszystkie pobrane zależności do RPM

Ostateczna wersja RPM powinna zostać zainstalowana i uruchomiona na hoście bez dostępu do sieci i tylko zainstalowany interpreter Pythona.

questionAnswers(1)

yourAnswerToTheQuestion