Programovanie

PyOxidizer používa Rust na vytvorenie spustiteľných súborov Pythonu

Nový projekt napísaný v Rust si kladie za cieľ uľahčiť balenie a distribúciu aplikácie Pythonu ako samostatného binárneho spustiteľného súboru - čo je pre vývojárov Pythonu už dlho bolestivou otázkou.

PyOxidizer je podľa svojho GitHub README „zbierkou Rust prepraviek, ktoré uľahčujú budovanie knižníc a binárnych súborov obsahujúcich interpretov Pythonu.“ S programom PyOxidizer, ako tvrdia jeho vývojári, je možné vytvoriť spustiteľný súbor pre aplikáciu Python, ktorá obsahuje interpreta Pythonu, bez ďalších závislostí za behu.

PyOxidizer vyžaduje inštaláciu Rust 1.31 alebo lepšej a balí iba aplikácie napísané v Pythone 3.7. Ak chcete použiť program PyOxidizer, vývojár vytvorí súbor TOML, ktorý popisuje, ako vložiť danú aplikáciu v jazyku Python, a potom vytvorí a spustí program PyOxidizer s premennou prostredia, ktorá ukazuje na tento súbor TOML.

PyOxidizer stojí na rozdiel od iných obalových riešení používaním vlastnej zostavy tlmočníka Python, ktorá je navrhnutá tak, aby bola staticky prepojená a vložená do iného programu. Ostatné riešenia, napríklad PyInstaller, redistribuujú existujúci CPython .DLL - pohodlné a kompatibilné, ale nie veľmi flexibilné. PyOxidizer tiež zbalí bytecode pre aplikáciu Python do spustiteľného obrázka a načíta ho priamo z pamäte (rýchlo), skôr ako zo súborového systému (pomalšie).

Rovnako ako PyInstaller však PyOxidizer nevykonáva žiadnu optimalizáciu kódu Pythonu. Ďalší projekt, Nuitka, nielenže kompiluje aplikácie z Pythonu do samostatných spustiteľných súborov, ale tiež sa snaží aplikovať optimalizáciu výkonu na kompilovaný kód. Nuitka je však stále považovaná za projekt na úrovni beta a veľké množstvo plánovaných vylepšení výkonu ešte nie je k dispozícii.

Samotný PyOxidizér je stále veľmi raným štádiom projektu. Môže generovať iba binárne súbory pre systém Linux, pretože jeden z nadstavbových projektov, na ktorých závisí, zabudovateľná verzia CPythonu, je v súčasnosti k dispozícii iba v zostavách systému Linux.

$config[zx-auto] not found$config[zx-overlay] not found