Dystrybucja aplikacji z zależnościami

0

W świecie Javy i mavena tworzę sobie odpowiednią konfigurację projektu i mogę jedną komendą wygenerować paczkę wraz z zależnościami (*.jar)

Czy w świecie Pythona jest coś takiego co pozwala utworzyć dystrybucję aplikacji wraz z zależnymi modułami?

Najczęściej moduły, które przychodzi mi stworzyć uruchamiane są na maszynach bez dostępu do internetu i z praktycznie gołym systemem. Każde doinstalowanie czegokolwiek, to ścieżka bólu i cierpienia. Chciałbym tego uniknąć i stąd ten temat. Jak to się robi w pythonie i czy się tak robi?

1

W Pythonie służą do tego takie moduły jak Py2exe i PyInstaller. Tworzą one środowisko z interpreterem Pythona, zależnościami i Twoim kodem w jednym folderze. Cały proces jest zautomatyzowany. Taka pythonowa wersja instalacyjna programu zajmuje więc znacznie więcej miejsca niż jedna binarka w Javie czy C++, bo to de facto całe środowisko uruchomieniowe. Więcej tutaj: https://docs.python-guide.org/shipping/freezing/

1
siloam napisał(a):

W Pythonie służą do tego takie moduły jak Py2exe i PyInstaller. Tworzą one środowisko z interpreterem Pythona, zależnościami i Twoim kodem w jednym folderze. Cały proces jest zautomatyzowany. Taka pythonowa wersja instalacyjna programu zajmuje więc znacznie więcej miejsca niż jedna binarka w Javie czy C++, bo to de facto całe środowisko uruchomieniowe. Więcej tutaj: https://docs.python-guide.org/shipping/freezing/

Nuitka kompiluje Pythona do C i później C do rzeczywistej binarki, a nie bundla z doczepionym interpreterem Pythona. Teoretycznie plik wynikowy powinien być trochę lżejszy, w praktyce wsysa tyle rzeczy po drodze (chyba cały stdlib Pythona), że binarka dla stosunkowo prostego skryptu okazała się 3 razy większa niż taki bundle :o No i nie wspiera (choć ktoś chyba próbował to wprowadzić) cross-kompilacji, więc chcąc wyprodukować binarkę na ARM musisz kompilować na docelowej platformie, VM lub emulatorze co jest trochę słabe.

0

Szczerze mówiąc pierwszy raz słyszę o kompilacji Pythona do C. Kiedyś ludzie z Dropbox'a napisali jedną z wersji klienta i użyli Py2exe, więc to narzędzie ma na pewno status production ready. https://www.usenix.org/system/files/conference/woot13/woot13-kholia.pdf, choć uważam, że bardziej przyjazny jest PyInstaller. Python to język typowo skryptowy, więc tworzenie chudych binarek jest dość kłopotliwe. Jeżeli komuś na tym zależy to lepiej pisać od razu w Nim, który świetnie kompiluje się do C i tworzy zoptymalizowane binarki a jego skladnia jest bardzo podobna do składni Pythona (no może oprócz modelu obiektowego, który bazuje na domieszkach, a nie klasach).

0
yarel napisał(a):

Każde doinstalowanie czegokolwiek, to ścieżka bólu i cierpienia. Chciałbym tego uniknąć i stąd ten temat.

Możesz też dorzucić z automatu do paczki skrypt, który korzysta z napisanych przez Ciebie modułów: https://docs.python.org/3/distutils/setupscript.html#installing-scripts

0 użytkowników online, w tym zalogowanych: 0, gości: 0