PyOxidizer използва Rust, за да направи изпълними програми на Python

Нов проект, написан на Rust, има за цел да улесни пакетирането и разпространението на приложение на Python като самостоятелен двоичен изпълним файл - нещо, което отдавна е проблем за разработчиците на Python.

PyOxidizer, според неговия GitHub README, е „колекция от Rust каси, които улесняват изграждането на библиотеки и двоични файлове, съдържащи интерпретатори на Python“. С PyOxidizer, твърдят разработчиците му, е възможно да се създаде изпълним файл за приложение на Python, което вгражда интерпретатор на Python, без други зависимости по време на изпълнение.

PyOxidizer изисква инсталиране на Rust 1.31 или по-нова версия и пакетира само приложения, написани с Python 3.7. За да използва PyOxidizer, разработчикът създава TOML файл, който описва как да се вгради дадено приложение на Python, след това изгражда и изпълнява PyOxidizer с променлива на околната среда, сочеща към този TOML файл.

PyOxidizer се отличава от другите решения за опаковане, като използва персонализирана компилация на интерпретатора Python, който е проектиран да бъде статично свързан и вграден в друга програма. Други решения, като PyInstaller, преразпределят съществуващия запас CPython .DLL - удобен и съвместим, но не много гъвкав. PyOxidizer също така пакетира байт кода за приложението Python в изпълнимия образ и го зарежда директно от паметта (бързо), а не от файловата система (по-бавно).

Подобно на PyInstaller, обаче, PyOxidizer не извършва никакви оптимизации на кода на Python. Друг проект, Nuitka, не само компилира приложения на Python към самостоятелни изпълними файлове, но също така се опитва да приложи оптимизации на производителността към компилирания код. Nuitka обаче все още се счита за проект на бета ниво и много от очакваните подобрения на производителността все още не са налични.

Самият PyOxidizer все още е проект на много ранен етап. Той може да генерира само двоични файлове на Linux, тъй като един от проектите нагоре по веригата, от който зависи, вградената версия на CPython, понастоящем е достъпна само в Linux компилации.