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

Przedstawiony pierwsza wersja narzędzia PyOxidizer, która umożliwia zapakowanie projektu w języku Python w formie samodzielnego pliku wykonywalnego, zawierającego interpreter Pythona oraz wszystkie niezbędne biblioteki i zasoby do działania. Takie pliki mogą być uruchamiane w środowiskach bez zainstalowanego narzędzi Pythona lub niezależnie od posiadanej wersji Pythona. PyOxidizer może także tworzyć pliki wykonywalne ze statycznymi zależnościami, które nie są powiązane z bibliotekami systemowymi. Kod projektu został napisany w języku Rust i rozpowszechniany na licencji MPL (Mozilla Public License) 2.0.

Projekt oparty jest na module o tej samej nazwie dla języka Rust, który umożliwia osadzanie interpreter Pythona w programach napisanych w Rust, w celu wykonywania skryptów Pythona. PyOxidizer obecnie wykracza poza rozszerzenie dla Rust i jest postrzegany jako narzędzie dostępne dla szerszej publiczności do tworzenia i dystrybucji samodzielnych pakietów z Pythonem. Dla tych, którzy nie potrzebują dystrybuować aplikacji w postaci pliku wykonywalnego, PyOxidizer oferuje możliwości generowania bibliotek nadających się do łączenia z dowolnymi aplikacjami w celu osadzenia w nich interpreter Pythona i odpowiedniego zestawu rozszerzeń.

Dla końcowych użytkowników dostarczenie projektu w postaci jednego pliku wykonywalnego znacznie ułatwia instalację i eliminuje potrzebę radzenia sobie z zależnościami, co jest szczególnie istotne dla skomplikowanych projektów w Pythonie, takich jak edytory wideo. Dla deweloperów aplikacji PyOxidizer pozwala zaoszczędzić czas na organizację dostarczania aplikacji, bez konieczności korzystania z różnych narzędzi do tworzenia pakietów dla różnych systemów operacyjnych.

Zastosowanie zaproponowanych kompilacji pozytywnie wpływa na wydajność — pliki generowane w PyOxidizer uruchamiają się szybciej niż przy użyciu systemowego Pythona dzięki eliminacji importu i definiowania podstawowych modułów. W PyOxidizer moduły są importowane z pamięci — wszystkie wbudowane moduły są od razu ładowane do pamięci i następnie używane bez odwoływania się do dysku). W testach czas uruchamiania aplikacji przy użyciu PyOxidizer skraca się o około połowę.

Wśród istniejących podobnych projektów można wymienić: PyInstaller (rozpakowuje plik do tymczasowego katalogu i importuje moduły z niego), py2exe (wiąże się z platformą Windows i wymaga rozdzielenia kilku plików), py2app (wiąże się z macOS), cx-freeze (wymaga oddzielnego pakowania zależności), Shiv i PEX (tworzą pakiet w formacie zip i wymaga obecności Pythona w systemie), Nuitka (kompiluje kod, a nie wbudowuje interpreter), pynsist (wiąże się z Windows), PyRun (własna rozwój bez wyjaśnienia zasad działania).

Na obecnym etapie rozwoju PyOxidizer już wdrożono podstawową funkcjonalność generowania plików wykonywalnych dla Windows, macOS i Linux. Spośród niedostępnych obecnie funkcji zaznaczono brak standardowego środowiska budowy, niemożność generowania pakietów w formatach MSI, DMG i deb/rpm, problemy z pakowaniem projektów zawierających złożone rozszerzenia w języku C, brak poleceń do wsparcia dostawy („pyoxidizer add”, „pyoxidizer analyze” i „pyoxidizer upgrade”), ograniczone wsparcie dla Terminfo i Readline, brak wsparcia dla wydań innych niż Python 3.7, brak wsparcia dla kompresji zasobów, niemożność krzyżowej kompilacji.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster