Vydání PyOxidizer pro balení Python projektů do samostatně spustitelných souborů

Představení první vydání utility PyOxidizer, která umožňuje zabalit projekt napsaný v jazyce Python do formy samostatného spustitelného souboru, který zahrnuje interpret Pythonu a všechny potřebné knihovny a zdroje pro jeho chod. Takové soubory mohou být vykonávány v prostředích bez nainstalovaných nástrojů Python nebo nezávisle na přítomnosti požadované verze Pythonu. PyOxidizer také může vytvářet staticky spojené spustitelné soubory, které nejsou navázány na systémové knihovny. Kód projektu je napsán v jazyce Rust a distribuováno pod licencí MPL (Mozilla Public License) 2.0.

Projekt je založen na stejnojmenném modulu pro jazyk Rust, který umožňuje vkládat Python interpret do programů napsaných v Rustu pro vykonávání Python skriptů. PyOxidizer nyní překročil rámec doplňku pro Rust a je prezentován jako dostupný pro širší publikum nástroj pro vytváření a distribuci samostatných balíčků s Pythonem. Pro ty, kteří nechtějí distribuovat aplikace jako spustitelné soubory, PyOxidizer poskytuje možnosti pro generování knihoven, které lze propojit s jakýmikoli aplikacemi pro vkládání interpretu Python a potřebného souboru rozšíření.

Pro koncové uživatele dodání projektu ve formě jednoho spustitelného souboru výrazně zjednodušuje instalaci a zbavuje práce s výběrem závislostí, což je aktuální například pro složité projekty v Pythonu, jako jsou videeditory. Pro vývojáře aplikací PyOxidizer umožňuje ušetřit čas na organizaci dodání aplikace, bez nutnosti používat různé nástroje pro vytváření balíčků pro různé operační systémy.

Použití nabízených sestavení také pozitivně ovlivňuje výkon — soubory generované v PyOxidizer se spouštějí rychleji než při použití systémového Pythonu díky vyloučení importu a definice základních modulů. V PyOxidizer se moduly importují z paměti — všechny vestavěné moduly se načítají najednou do paměti a poté se používají bez přístupu na disk. V testech se doba spuštění aplikace při použití PyOxidizer zkracuje přibližně na polovinu.

Mezi již existující podobné projekty můžeme zmínit: PyInstaller (rozbalí soubor do dočasného adresáře a importuje moduly z něj), py2exe (vázáno na platformu Windows a vyžaduje distribuci několika souborů), py2app (vázáno na macOS), cx-freeze (vyžaduje samostatné zabalení závislostí), Shiv a PEX (vytvářejí balíček ve formátu zip a vyžadují přítomnost Pythonu v systému), Nuitka (kompiluje kód, nikoli nezahrnuje interpretor), pynsist (vázáno na Windows), PyRun (proprietární vývoj bez vysvětlení principů fungování).

V aktuálním vývojovém stádiu má PyOxidizer již implementovanou základní funkcionalitu pro generování spustitelných souborů pro Windows, macOS a Linux. Mezi dosud nedostupnými funkcemi se vyzdvihuje chybí typové build prostředí, nemožnost generace balíčků ve formátech MSI, DMG a deb/rpm, problémy s balením projektů obsahujících složité rozšíření v jazyce C, absence příkazů pro podporu dodávky („pyoxidizer add“, „pyoxidizer analyze“ a „pyoxidizer upgrade“), omezená podpora Terminfo a Readline, nepodpora verzí jiných než Python 3.7, absence podpory komprese zdrojů, nemožnost kross-kompilace.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster