python編譯體積大
發布時間: 2025-03-20 21:51:37
㈠ python嵌入式打包,解決大型庫打包難題
在使用python項目涉及大型第三方庫如torch後,項目體積可能超過1GB,導致使用nuitka或pyinstaller打包面臨打包成功率低、耗時長、打包後體積大等問題。本文探討使用嵌入式打包來解決這一難題。
解決思路在於只打包解釋器和項目核心代碼,第三方依賴由用戶在首次使用程序時現場安裝。實現這一方案的示例代碼如下:
示例代碼的項目構造
- main.py
- app文件夾,放置自定義代碼的文件
- start_main.py項目文件
運行效果與打包準備
- 准備項目依賴文件requirements.txt,激活項目環境,使用命令導出依賴文件。
- 下載嵌入式解釋器與pystand殼,從官網及github獲取。
- 准備get-pip.py腳本,用於下載pip工具。
開始打包
- 復制項目代碼至pystand同級目錄下的app文件夾,覆蓋pystand.int文件內容。
- 創建download.py腳本,用於提示用戶安裝依賴、運行pip工具安裝環境依賴,並提醒用戶重啟程序。
- 修改pystand.int文件,捕獲MoleNotFoundError錯誤,調用python解釋器運行download.py腳本。
- 將requirements.txt文件放置在runtime文件夾。
- 修改runtime文件夾中的._pth文件,取消import site前的注釋。
- 刪除pystand同級目錄的sitepackages文件夾。
測試與額外講解
測試包含如下步驟:
- 雙擊運行pystand,程序提示缺少依賴,執行下載腳本。
- 安裝完成後,提示用戶重啟程序。
- 重啟程序,首次啟動較慢(包含第三方庫py轉pyc的過程),後續啟動正常。
這種方式利用pip工具,使得程序分發體積僅11MB,避免了Python程序打包體積過大問題,同時避免了傳統打包方式可能遺漏依賴的問題。適合大型庫如torch、yolov、OCR等的項目。無需用戶電腦上已有Python環境,第三方庫安裝在runtimeLibsite-packages文件夾下,確保._pth文件取消注釋以避免no mole name pip錯誤。打包方式一次成功後,可多次復用,不同項目只需替換依賴文件、代碼及runtime文件夾內容。
torch庫的特殊打包
若項目依賴了torch庫的GPU版,需將依賴文件拆分為包含torch、torchaudio、torchvision三個庫的一份和包含其他依賴庫的一份。download.py腳本需先安裝torch庫。
熱點內容