Programování

PyOxidizer používá Rust k vytvoření spustitelných souborů Pythonu

Nový projekt napsaný v Rustu si klade za cíl usnadnit zabalení a distribuci aplikace Pythonu jako samostatného binárního spustitelného souboru - něco, co je již dlouho pro vývojáře Pythonu problémem.

PyOxidizer je podle svého GitHub README „sbírkou přepravek Rust, které usnadňují budování knihoven a binárních souborů obsahujících interprety Pythonu.“ S vývojářem PyOxidizer tvrdí jeho vývojáři, že je možné vytvořit spustitelný soubor pro aplikaci Python, která vloží interpreta Pythonu, bez dalších závislostí za běhu.

PyOxidizer vyžaduje instalaci Rust 1.31 nebo lepší a balí pouze aplikace napsané v Pythonu 3.7. Chcete-li použít PyOxidizer, vývojář vytvoří soubor TOML, který popisuje, jak vložit danou aplikaci Pythonu, poté vytvoří a spustí PyOxidizer s proměnnou prostředí, která ukazuje na tento soubor TOML.

PyOxidizer stojí na rozdíl od jiných obalových řešení v použití vlastního sestavení interpretu Pythonu, který je navržen tak, aby byl staticky propojen a vložen do jiného programu. Jiná řešení, jako je PyInstaller, redistribuují stávající CPython .DLL - pohodlné a kompatibilní, ale ne příliš flexibilní. PyOxidizer také zabalí bytecode pro aplikaci Python do spustitelného obrazu a načte jej přímo z paměti (rychle), nikoli ze systému souborů (pomaleji).

Stejně jako PyInstaller však PyOxidizer neprovádí žádné optimalizace kódu Pythonu. Další projekt, Nuitka, nejen kompiluje aplikace Pythonu do samostatných spustitelných souborů, ale také se pokouší použít optimalizaci výkonu na kompilovaný kód. Nuitka je však stále považována za projekt na úrovni beta a mnoho z předpokládaných vylepšení výkonu ještě není k dispozici.

Samotný PyOxidizer je stále velmi rané fázi projektu. Může generovat pouze binární soubory pro Linux, protože jeden z upstream projektů, na kterých záleží, integrovaná verze CPython, je aktuálně k dispozici pouze v sestavení Linuxu.