pierwsza wersja narzędzia , 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 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ć: (rozpakowuje plik do tymczasowego katalogu i importuje moduły z niego), (wiąże się z platformą Windows i wymaga rozdzielenia kilku plików), (wiąże się z macOS), (wymaga oddzielnego pakowania zależności), i (tworzą pakiet w formacie zip i wymaga obecności Pythona w systemie), (kompiluje kod, a nie wbudowuje interpreter), (wiąże się z Windows), (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 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
