Veröffentlichung von PyOxidizer zum Packen von Python-Projekten in eigenständige ausführbare Dateien

Eingereicht von erste Veröffentlichung des Dienstprogramms PyOxidator, mit dem Sie ein Projekt in Python in Form einer eigenständigen ausführbaren Datei packen können, einschließlich des Python-Interpreters und aller für die Arbeit erforderlichen Bibliotheken und Ressourcen. Solche Dateien können in Umgebungen ohne installierte Python-Tools oder unabhängig von der erforderlichen Python-Version ausgeführt werden. PyOxidizer kann auch statisch verknüpfte ausführbare Dateien generieren, die nicht mit Systembibliotheken verknüpft sind. Der Projektcode ist in Rust geschrieben und vertrieben von lizenziert unter MPL (Mozilla Public License) 2.0.

Das Projekt basiert auf dem gleichnamigen Rust-Sprachmodul, das es ermöglicht, einen Python-Interpreter in Rust-Programme einzubetten, um darin Python-Skripte auszuführen. PyOxidizer ist mittlerweile nicht mehr nur ein Rust-Add-on, sondern wird als Tool zum Erstellen und Verteilen eigenständiger Python-Pakete an ein breiteres Publikum positioniert. Für diejenigen, die Anwendungen nicht als ausführbare Datei verteilen müssen, bietet PyOxidizer die Möglichkeit, Bibliotheken zu generieren, die für die Verknüpfung mit jeder Anwendung geeignet sind, um einen Python-Interpreter und die erforderlichen Erweiterungen einzubetten.

Für Endbenutzer vereinfacht die Bereitstellung des Projekts als einzelne ausführbare Datei die Installation erheblich und macht die Auswahl von Abhängigkeiten überflüssig, was beispielsweise für komplexe Python-Projekte wie Videoeditoren wichtig ist. Für Anwendungsentwickler ermöglicht PyOxidizer, Zeit bei der Organisation der Anwendungsbereitstellung zu sparen, ohne dass unterschiedliche Tools zum Erstellen von Paketen für verschiedene Betriebssysteme verwendet werden müssen.

Die Verwendung der vorgeschlagenen Assemblys wirkt sich auch positiv auf die Leistung aus – in PyOxidizer generierte Dateien werden schneller ausgeführt als bei Verwendung von System-Python, da der Import und die Definition von Basismodulen entfallen. In PyOxidizer werden Module aus dem Speicher importiert – alle integrierten Module werden sofort in den Speicher geladen und dann ohne Zugriff auf die Festplatte verwendet. In Tests wurde die Anwendungsstartzeit bei Verwendung von PyOxidizer um etwa die Hälfte reduziert.

Unter den bereits bestehenden ähnlichen Projekten sind folgende zu nennen: PyInstaller (entpackt die Datei in ein temporäres Verzeichnis und importiert Module daraus), py2exe (gebunden an die Windows-Plattform und erfordert die Verteilung mehrerer Dateien), py2app (gebunden an macOS), cx-freeze (erfordert separate Abhängigkeitsverpackung), Shiv и PEX (bilden Sie ein Paket im ZIP-Format und erfordern Sie Python auf dem System), Nacht (kompiliert den Code, anstatt einen Interpreter einzubetten), pynsist (gebunden an Windows) PyRun (Eigenentwicklung ohne Erläuterung der Funktionsprinzipien).

Im aktuellen Entwicklungsstadium hat PyOxidizer bereits die Hauptfunktionalität zur Generierung ausführbarer Dateien für Windows, macOS und Linux implementiert. Aus derzeit nicht verfügbaren Möglichkeiten отмечается Fehlen einer Standard-Build-Umgebung, Unfähigkeit, Pakete in den Formaten MSI, DMG und deb/rpm zu generieren, Probleme mit Paketierungsprojekten, die komplexe Erweiterungen in der C-Sprache enthalten, Fehlen von Befehlen zur Unterstützung der Bereitstellung („pyoxidizer add“, „pyoxidizeranalysieren“) und „Pyoxidizer-Upgrade“), eingeschränkte Unterstützung für Terminfo und Readline, fehlende Unterstützung für andere Versionen als Python 3.7, fehlende Unterstützung für Ressourcenkomprimierung, keine Möglichkeit zur Cross-Kompilierung.

Source: opennet.ru

Kommentar hinzufügen