Mam kilka aplikacji python składających się ze skryptów/modułów, które powinny być pakowane i wdrażane jako RPM.Dystrybucja pakietu Pythona wraz z zależnościami modułów przy użyciu RPM
Trędszym bitem jest to, że każda aplikacja powinna być dystrybuowana wraz z wszystkimi zależnościami modułu Pythona, a te powinny być używane zamiast tych, które są zainstalowane w całym systemie.
Host docelowy niektórych z tych RPM ma ograniczony dostęp do sieci, więc te pakiety RPM powinny zawierać wszystko, co jest potrzebne do uruchomienia aplikacji, a nie pobierać niczego podczas wdrażania.
Przyjrzałem się pakowaniu i dystrybucji virtualenv, ale przenoszenie virtualenv nie wydaje się być dobrze obsługiwane.
Przyjrzałem się zc.buildout, ale znalazłem brakującą dokumentację. Mogłem zobaczyć, jak pobierać zależności podczas programowania, ale nie w jaki sposób je dystrybuować jako część większej aplikacji. Możliwe, że różne aplikacje wymagają różnych wersji tego samego modułu, więc nie powinny one być instalowane na całym systemie.
Innym problemem jest to, że wszelkie skrypty Pythona w aplikacji muszą zostać zmodyfikowane, aby użyć innego sys.path podczas programowania i po wdrożeniu, nie widziałem oczywistego sposobu obejścia tego.
Czy istnieją sugestie, jak najlepiej to osiągnąć? Idealnym podsumowaniem przepływu pracy z punktu widzenia programisty widzenia wyglądałby następująco:
- źródłowym aplikacji do pobrania skryptu
- run przynieść konkretne zależności modułu jeśli nie występuje (być może przy użyciu pip)
- Uruchom skrypt do budowania app python i pakiet go i wszystkie pobrane zależności język RPM
ostateczna RPM powinien wtedy być instalowane i uruchamianego na komputerze bez dostępu do sieci, a tylko interpreter Pythona zainstalowany.
Możesz rozpowszechniać samodzielny plik wykonywalny Pythona - pakowany w RPM? Czy potrzebujesz kodu źródłowego, aby był dostępny dla użytkowników? Jeśli nie zajrzyj tutaj http://stackoverflow.com/questions/5458048/how-to-make-a-python-script-standalone-executable-to-run-z -niezależną- – Anshul
Nie użyłem tego, ale [conda's] (http://www.continuum.io/blog/conda) mają na celu poradzić sobie z takimi sprawami jak twoje. Zobacz link "Rolling your own packages" pod tym linkiem. –
Powinieneś używać pakietów paczek lub "kółek" PIP – ionelmc