Wydanie PyOxidizer do pakowania projektów Pythona w samodzielne pliki wykonywalne

Przesłane przez pierwsza wersja narzędzia PyOtleniacz, co pozwala spakować projekt w Pythonie do postaci samodzielnego pliku wykonywalnego, zawierającego interpreter Pythona oraz wszystkie biblioteki i zasoby niezbędne do pracy. Takie pliki można uruchamiać w środowiskach bez zainstalowanych narzędzi Pythona lub niezależnie od wymaganej wersji Pythona. PyOxidizer może również generować statycznie połączone pliki wykonywalne, które nie są powiązane z bibliotekami systemowymi. Kod projektu jest napisany w języku Rust i dystrybuowane przez na licencji MPL (Mozilla Public License) 2.0.

Projekt opiera się na module języka Rust o tej samej nazwie, który pozwala na osadzenie interpretera Pythona w programach Rusta w celu uruchamiania w nich skryptów Pythona. PyOxidizer wykroczył już poza bycie dodatkiem do Rusta i jest pozycjonowany jako narzędzie do budowania i dystrybucji samodzielnych pakietów Pythona wśród szerszej publiczności. Dla tych, którzy nie muszą rozpowszechniać aplikacji jako pliku wykonywalnego, PyOxidizer zapewnia możliwość generowania bibliotek odpowiednich do połączenia z dowolną aplikacją w celu osadzenia interpretera Pythona i niezbędnego zestawu rozszerzeń.

Dla użytkowników końcowych dostarczenie projektu w postaci pojedynczego pliku wykonywalnego znacznie upraszcza instalację i eliminuje konieczność wybierania zależności, co jest ważne na przykład w przypadku złożonych projektów w języku Python, takich jak edytory wideo. Twórcom aplikacji PyOxidizer pozwala zaoszczędzić czas na organizowaniu dostarczania aplikacji, bez konieczności używania różnych narzędzi do tworzenia pakietów dla różnych systemów operacyjnych.

Zastosowanie proponowanych asemblerów pozytywnie wpływa także na wydajność - pliki wygenerowane w PyOxidizer działają szybciej niż przy użyciu systemowego Pythona, dzięki eliminacji importu i definicji modułów bazowych. W PyOxidizer moduły importowane są z pamięci - wszystkie wbudowane moduły są od razu ładowane do pamięci i następnie wykorzystywane bez dostępu do dysku). W testach czas uruchamiania aplikacji przy użyciu PyOxidizera został skrócony o około połowę.

Wśród już istniejących podobnych projektów można zauważyć: PyInstaller (rozpakowuje plik do katalogu tymczasowego i importuje z niego moduły), py2exe (powiązany z platformą Windows i wymaga dystrybucji wielu plików), py2app (powiązany z macOS), cx-zamrożenie (wymaga osobnego opakowania zależności), Shiv и PEX (tworzą paczkę w formacie ZIP i wymagają Pythona w systemie), noc (kompiluje kod zamiast osadzać interpreter), cynista (powiązany z Windowsem) PyRun (opracowanie autorskie bez wyjaśnienia zasad działania).

Na obecnym etapie rozwoju PyOxidizer zaimplementował już główną funkcjonalność generowania plików wykonywalnych dla systemów Windows, macOS i Linux. Z obecnie niedostępnych możliwości jest obchodzony brak standardowego środowiska kompilacji, brak możliwości generowania pakietów w formatach MSI, DMG i deb/rpm, problemy z projektami pakowania zawierającymi złożone rozszerzenia w języku C, brak poleceń wspierających dostarczanie („pyoksydizer add”, „pyoksydator analiza” i „aktualizacja pyoksydatora”), ograniczone wsparcie dla Terminfo i Readline, brak wsparcia dla wydań innych niż Python 3.7, brak wsparcia dla kompresji zasobów, brak możliwości kompilacji krzyżowej.

Źródło: opennet.ru

Dodaj komentarz