PyOxidizer utilise Rust pour créer des exécutables Python

Un nouveau projet, écrit en Rust, vise à faciliter le package et la distribution d'une application Python en tant qu'exécutable binaire autonome, ce qui a longtemps été un problème pour les développeurs Python.

PyOxidizer, selon son GitHub README, est «une collection de caisses Rust qui facilitent la création de bibliothèques et de binaires contenant des interpréteurs Python». Avec PyOxidizer, affirment ses développeurs, il est possible de créer un exécutable pour une application Python qui intègre un interpréteur Python, sans aucune autre dépendance d'exécution.

PyOxidizer nécessite une installation de Rust 1.31 ou supérieur, et ne contient que les applications écrites avec Python 3.7. Pour utiliser PyOxidizer, le développeur crée un fichier TOML qui décrit comment incorporer une application Python donnée, puis construit et exécute PyOxidizer avec une variable d'environnement pointant vers ce fichier TOML.

PyOxidizer se distingue des autres solutions d'empaquetage en utilisant une version personnalisée de l'interpréteur Python qui est conçue pour être liée statiquement et intégrée dans un autre programme. D'autres solutions, comme PyInstaller, redistribuent le stock CPython .DLL existant - pratique et compatible, mais pas très flexible. PyOxidizer emballe également le bytecode de l'application Python dans l'image exécutable et le charge directement à partir de la mémoire (rapide), plutôt qu'à partir du système de fichiers (plus lent).

Comme PyInstaller, cependant, PyOxidizer n'effectue aucune optimisation sur le code Python. Un autre projet, Nuitka, non seulement compile des applications Python en exécutables autonomes, mais tente également d'appliquer des optimisations de performances au code compilé. Cependant, Nuitka est toujours considéré comme un projet de niveau bêta, et un grand nombre des améliorations de performances prévues ne sont pas encore disponibles.

PyOxidizer lui-même est encore un projet à un stade très précoce. Il ne peut générer que des binaires Linux car l'un des projets en amont dont il dépend, la version intégrable de CPython, n'est actuellement disponible que dans les versions Linux.