première version de l'outil , qui permet d'emballer un projet Python sous la forme d'un fichier exécutable autonome, incluant un interpréteur Python ainsi que toutes les bibliothèques et ressources nécessaires à son fonctionnement. De tels fichiers peuvent être exécutés dans des environnements sans l'outil Python installé ou indépendamment de la version Python requise. PyOxidizer peut également générer des fichiers exécutables statiquement liés, qui ne dépendant pas des bibliothèques système. Le code du projet est écrit en Rust et sous licence MPL (Mozilla Public License) 2.0.
Le projet est basé sur un module éponyme pour le langage Rust, permettant d'intégrer un interpréteur Python dans des programmes Rust pour exécuter des scripts Python. PyOxidizer dépasse désormais le cadre d'un complément pour Rust et se positionne comme un outil accessible à un public plus large pour créer et distribuer des paquets autonomes avec Python. Pour ceux qui n'ont pas besoin de distribuer des applications sous forme de fichier exécutable, PyOxidizer offre des fonctionnalités pour générer des bibliothèques adaptées à l'intégration d'un interpréteur Python et d'un ensemble d'extensions requises.
Pour les utilisateurs finaux, la livraison du projet sous la forme d'un fichier exécutable unique simplifie considérablement l'installation et évite le travail de recherche de dépendances, ce qui est particulièrement pertinent pour des projets Python complexes comme des éditeurs vidéo. Pour les développeurs d'applications, PyOxidizer leur permet de gagner du temps sur l'organisation de la distribution de l'application, sans avoir à utiliser différents outils pour la création de paquets pour différents systèmes d'exploitation.
L'utilisation de ces builds a également un impact positif sur les performances - les fichiers générés par PyOxidizer se lancent plus rapidement que ceux utilisant le Python système grâce à l'élimination de l'importation et de la définition des modules de base. Dans PyOxidizer, les modules sont importés depuis la mémoire - tous les modules intégrés sont chargés en mémoire et ensuite utilisés sans appel au disque). Dans les tests, le temps de démarrage d'une application utilisant PyOxidizer est réduit d'environ moitié.
Parmi les projets similaires déjà existants, on peut noter : (qui extrait le fichier dans un répertoire temporaire et importe les modules à partir de celui-ci), (lié à la plateforme Windows et nécessite la distribution de plusieurs fichiers), (lié à macOS), (nécessite un emballage séparé des dépendances), et (forme un package au format zip et nécessite la présence de Python sur le système), (compile le code au lieu d'intégrer l'interpréteur), (lié à Windows), (développement propriétaire sans explication du fonctionnement).
À ce stade de développement, PyOxidizer dispose déjà des fonctionnalités de base pour générer des fichiers exécutables pour Windows, macOS et Linux. Par rapport aux fonctionnalités encore non disponibles, l'absence d'un environnement de construction standard, l'impossibilité de générer des paquets aux formats MSI, DMG et deb/rpm, des problèmes d'emballage de projets incluant des extensions complexes en C, l'absence de commandes pour assurer la livraison (‘pyoxidizer add’, ‘pyoxidizer analyze’ et ‘pyoxidizer upgrade’), une prise en charge limitée de Terminfo et Readline, l'absence de support pour les versions autres que Python 3.7, l'absence de compression des ressources, et l'impossibilité de cross-compilation.
Source : opennet.ru
