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

Předložené první vydání nástroje PyOxidátor, který umožňuje zabalit projekt v Pythonu do podoby samostatného spustitelného souboru, včetně interpretu Pythonu a všech knihoven a zdrojů nezbytných pro práci. Takové soubory lze spouštět v prostředích bez nainstalovaných nástrojů Python nebo bez ohledu na požadovanou verzi Pythonu. PyOxidizer může také generovat staticky propojené spustitelné soubory, které nejsou propojeny se systémovými knihovnami. Kód projektu je napsán v Rust and distribuovány licencováno pod MPL (Mozilla Public License) 2.0.

Projekt je založen na stejnojmenném jazykovém modulu Rust, který umožňuje vložit do programů Rust interpret Pythonu a spouštět v nich skripty Pythonu. PyOxidizer nyní přesahuje rámec doplňku Rust a je umístěn jako nástroj pro vytváření a distribuci samostatných balíčků Pythonu širšímu publiku. Pro ty, kteří nepotřebují distribuovat aplikace jako spustitelný soubor, poskytuje PyOxidizer možnost generovat knihovny vhodné pro propojení s libovolnou aplikací pro vložení interpretu Pythonu a potřebné sady rozšíření.

Pro koncové uživatele dodání projektu jako jediného spustitelného souboru výrazně zjednodušuje instalaci a eliminuje práci s výběrem závislostí, což je důležité například u komplexních projektů Pythonu, jako jsou video editory. Vývojářům aplikací PyOxidizer umožňuje ušetřit čas organizováním doručování aplikací, aniž by bylo nutné používat různé nástroje k vytváření balíčků pro různé operační systémy.

Použití navržených sestav má také pozitivní vliv na výkon - soubory generované v PyOxidizer běží rychleji než při použití systémového Pythonu díky eliminaci importu a definice základních modulů. V PyOxidizer jsou moduly importovány z paměti - všechny vestavěné moduly jsou okamžitě načteny do paměti a poté použity bez přístupu na disk). V testech se doba spuštění aplikace při použití PyOxidizer zkrátí přibližně na polovinu.

Mezi již existujícími podobnými projekty lze zaznamenat následující: PyInstaller (rozbalí soubor do dočasného adresáře a importuje z něj moduly), py2exe (vázáno na platformu Windows a vyžaduje distribuci více souborů), py2app (vázáno na macOS), cx-freeze (vyžaduje samostatné balení závislostí), Shiv и PEX (vytvořit balíček ve formátu zip a v systému vyžaduje Python), Nuitka (kompiluje kód spíše než vloží interpret), pyndista (vázáno na Windows) PyRun (proprietární vývoj bez vysvětlení principů fungování).

V současné fázi vývoje již PyOxidizer implementoval hlavní funkcionalitu pro generování spustitelných souborů pro Windows, macOS a Linux. Z aktuálně nedostupných příležitostí se slaví nedostatek standardního prostředí pro sestavení, nemožnost generovat balíčky ve formátech MSI, DMG a deb/rpm, problémy s balicími projekty, které zahrnují komplexní rozšíření v jazyce C, nedostatek příkazů pro podporu doručení („pyoxidizer add“, „pyoxidizer analysis“ a „upgrade pyoxidizeru“), omezená podpora pro Terminfo a Readline, nedostatek podpory pro jiná vydání než Python 3.7, nedostatek podpory pro kompresi zdrojů, nemožnost křížové kompilace.

Zdroj: opennet.ru

Přidat komentář