Sortie de PyOxidizer pour empaqueter des projets Python dans des exécutables autonomes

Introduit première version de l'utilitaire PyOxydant, qui permet de conditionner un projet en Python sous la forme d'un fichier exécutable autonome, comprenant l'interpréteur Python et toutes les bibliothèques et ressources nécessaires au travail. Ces fichiers peuvent être exécutés dans des environnements sans outils Python installés ou quelle que soit la version requise de Python. PyOxidizer peut également générer des fichiers exécutables liés statiquement qui ne sont pas liés aux bibliothèques système. Le code du projet est écrit en Rust et distribué par sous licence MPL (Mozilla Public License) 2.0.

Le projet est basé sur le module de langage Rust du même nom, qui vous permet d'intégrer un interpréteur Python dans les programmes Rust pour y exécuter des scripts Python. PyOxidizer est désormais plus qu'un module complémentaire Rust et se positionne comme un outil permettant de créer et de distribuer des packages Python autonomes à un public plus large. Pour ceux qui n'ont pas besoin de distribuer des applications sous forme de fichier exécutable, PyOxidizer offre la possibilité de générer des bibliothèques adaptées à la liaison avec n'importe quelle application pour intégrer un interpréteur Python et l'ensemble d'extensions nécessaire.

Pour les utilisateurs finaux, livrer le projet sous forme de fichier exécutable unique simplifie grandement l'installation et élimine le travail de sélection des dépendances, ce qui est important, par exemple, pour les projets Python complexes tels que les éditeurs vidéo. Pour les développeurs d'applications, PyOxidizer vous permet de gagner du temps en organisant la livraison des applications, sans avoir besoin d'utiliser différents outils pour créer des packages pour différents systèmes d'exploitation.

L'utilisation des assemblys proposés a également un effet positif sur les performances - les fichiers générés dans PyOxidizer s'exécutent plus rapidement que lors de l'utilisation du système Python en raison de 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 immédiatement chargés en mémoire puis utilisés sans accéder au disque). Lors des tests, le temps de lancement de l'application lors de l'utilisation de PyOxidizer est réduit d'environ la moitié.

Parmi les projets similaires déjà existants, on peut noter : PyInstaller (décompresse le fichier dans un répertoire temporaire et en importe les modules), py2exe (lié à la plate-forme Windows et nécessite la distribution de plusieurs fichiers), py2app (lié à macOS), cx-geler (nécessite un packaging de dépendances séparé), Shiv и PEX (forme un package au format zip et nécessite Python sur le système), Nuitka (compile le code plutôt que d'embarquer un interpréteur), psysiste (lié à Windows) PyrRun (développement propriétaire sans explication des principes de fonctionnement).

Au stade actuel de développement, PyOxidizer a déjà implémenté la principale fonctionnalité de génération de fichiers exécutables pour Windows, macOS et Linux. Parmi les opportunités actuellement indisponibles noté absence d'environnement de build standard, incapacité à générer des packages aux formats MSI, DMG et deb/rpm, problèmes avec les projets de packaging qui incluent des extensions complexes en langage C, manque de commandes pour prendre en charge la livraison (« pyoxidizer add », « pyoxidizer analyse » et « mise à niveau de pyoxidizer »), prise en charge limitée de Terminfo et Readline, manque de prise en charge des versions autres que Python 3.7, manque de prise en charge de la compression des ressources, incapacité de compilation croisée.

Source: opennet.ru

Ajouter un commentaire