Випуск PyOxidizer для упаковки Python-проектів в самодостатні файли, що виконуються.

представлений перший випуск утиліти Піоксидант, що дозволяє упаковати проект мовою Python у форму самодостатнього виконуваного файлу, що включає інтерпретатор Python і всі необхідні для роботи бібліотеки та ресурси. Подібні файли можуть виконуватися в оточенні без інстальованого інструментарію Python або незалежно від наявності необхідної версії Python. PyOxidizer також може формувати статично пов'язані файли, що виконуються, які не прив'язані і до системних бібліотек. Код проекту написаний мовою Rust та поширюється під ліцензією MPL (Mozilla Public License) 2.0.

Проект заснований на однойменному модулі для мови Rust, що дозволяє вбудовувати Python-інтерпретатор у програми Rust для виконання в них Python-скриптів. PyOxidizer тепер вийшов за рамки доповнення для Rust та позиціонується як доступний для ширшої аудиторії інструмент для формування та розповсюдження самодостатніх пакетів з Python. Для тих, кому не потрібно розповсюджувати програми у вигляді файлу, що виконується, PyOxidizer надає можливості по генерації бібліотек, придатних для зв'язування з будь-якими програмами для вбудовування в них інтерпретатора Python і необхідного набору розширень.

Для кінцевих користувачів постачання проекту у вигляді одного виконуваного файлу суттєво спрощує встановлення та позбавляє роботи з підбору залежностей, що актуально, наприклад, для складних проектів на Python, таких як відеоредактори. Для розробників програм PyOxidizer дозволяє заощадити час на організацію доставки програми, без необхідності використання різних інструментів для формування пакетів для різних операційних систем.

Застосування запропонованих збірок також позитивно позначається на продуктивності — файли, що згенеровані в PyOxidizer, запускаються швидше, ніж при використанні системного Python за рахунок виключення імпорту та визначення базових модулів. У PyOxidizer модулі імпортуються з пам'яті - всі вбудовані модулі відразу завантажуються в пам'ять і потім використовуються без використання диска). У тестах час запуску програми під час використання PyOxidizer скорочується приблизно удвічі.

З існуючих схожих проектів можна відзначити: PyInstaller (розпаковує файл у тимчасовий каталог та імпортує модулі з нього), py2exe (прив'язаний до платформи Windows і вимагає поширення кількох файлів), py2app (прив'язаний до macOS), cx-freeze (вимагає окремої упаковки залежностей), Шив и PEX (формують пакет у форматі zip і вимагає наявності Python у системі), Нуїтка (компілює код, а не вбудовує інтерпретатор), pynsist (прив'язаний до Windows), PyRun (Пропрієтарна технологія без пояснення принципів роботи).

На поточному етапі розвитку PyOxidizer вже реалізована основна функціональність по генерації виконуваних файлів для Windows, macOS і Linux. З поки що недоступних можливостей зазначається відсутність типового складального оточення, неможливість генерації пакетів у форматах MSI, DMG і deb/rpm, проблеми з упаковкою проектів, що включають складні розширення мовою Сі, відсутність команд для супроводу доставки (pyoxidizer add, pyoxidizer analyze і pyoxidizer upgrade) ), обмежена підтримка Terminfo і Readline, відсутність підтримки випусків, відмінних від Python 3.7, відсутність підтримки стиснення ресурсів, неможливість крос-компіляції.

Джерело: opennet.ru

Додати коментар або відгук