發布 PyOxidizer,用於將 Python 項目打包成獨立的可執行文件

介紹 該實用程序的第一個版本 高溫氧化劑,它允許您將 Python 項目打包成一個獨立的可執行文件,其中包括 Python 解釋器和工作所需的所有庫和資源。 此類文件可以在未安裝 Python 工具的環境中運行,或者無需考慮所需的 Python 版本。 PyOxidizer 還可以生成靜態鏈接的可執行文件,這些文件也沒有鏈接到系統庫。 項目代碼是用 Rust 編寫的,並且 分發者 根據 MPL(Mozilla 公共許可證)2.0 獲得許可。

該項目基於 Rust 語言的同名模塊,它允許您將 Python 解釋器嵌入到 Rust 程序中以在其中執行 Python 腳本。 PyOxidizer 現在已經超越了 Rust 的附加組件,並將自己定位為為更廣泛的受眾構建和分發獨立 Python 包的工具。 對於那些不需要將應用程序作為可執行文件分發的人,PyOxidizer 提供了生成適合與任何應用程序鏈接的庫的能力,以將 Python 解釋器和必要的擴展集嵌入其中。

對於最終用戶,將項目作為單個可執行文件交付大大簡化了安裝並消除了選擇依賴項的工作,這與復雜的 Python 項目(例如視頻編輯器)相關。 對於應用程序開發人員,PyOxidizer 允許您節省組織應用程序交付的時間,而無需使用不同的工具為不同的操作系統生成包。

使用建議的程序集對性能也有積極影響——由於消除了導入和基本模塊的定義,在 PyOxidizer 中生成的文件運行速度比使用系統 Python 時快。 在 PyOxidizer 中,模塊是從內存中導入的——所有內置模塊都會立即加載到內存中,然後在沒有磁盤訪問的情況下使用)。 在測試中,使用 PyOxidizer 時應用程序啟動時間減少了大約一半。

在已經存在的類似項目中,我們可以注意到: PyInstaller的 (將文件解壓到臨時目錄並從中導入模塊), py2exe (綁定到 Windows 平台,需要分發多個文件), py2應用程序 (綁定到 macOS), CX-凍結 (需要單獨依賴打包), 希夫 и PEX (打包成zip格式,系統需要Python), 努特卡 (編譯代碼而不是嵌入解釋器), 醫生 (綁定到 Windows), 運行Py (專有開發,不解釋操作原理)。

在目前的開發階段,PyOxidizer 已經實現了為 Windows、macOS 和 Linux 生成可執行文件的主要功能。 尚不可用的機會 著名 缺少典型的構建環境,無法生成 MSI、DMG 和 deb/rpm 格式的包,包含複雜 C 擴展的打包項目存在問題,缺少伴隨交付的命令(“pyoxidizer add”、“pyoxidizer analyze”和“pyoxidizer upgrade" ),對 Terminfo 和 Readline 的支持有限,不支持 Python 3.7 以外的版本,不支持資源壓縮,不支持交叉編譯。

來源: opennet.ru

添加評論