作者te1e1 (te1e1)
看板Python
標題[問題] Linux打包exe,竟然超過600M
時間Wed May 19 23:40:38 2021
餓死抬頭,我前陣子寫了一個不大的程式。因為之後是要在樹莓派上面執行,
所以我就直接在樹莓派上面進行pyinstaller,想要打包成exe執行檔。結果發現
打包完後竟然超過600M,嚇到我褲子都掉了下來。
它打包的過程中,我發現竟然還包含一堆我根本沒用的模組,譬如PyQT或TK等,
如果真的要追究,我有使用pandas模組,應該會占一點空間,但也不至於這麼大吧!
想請問各位高手,有什麼解決的辦法呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.166.43.94 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1621438840.A.55C.html
推 yiche: 試試看nuitka 05/19 23:57
→ yiche: 需要先裝gcc 不過這對Linux 應該不是問題 05/19 23:57
推 ddavid: 你打包時有新建一個乾淨的虛擬環境嗎? 05/20 02:10
→ AndCycle: 你不大的程式用了什麼模組會差很多… 05/20 17:03
推 jameschiou: 其實只要包pandas大概都破100MB... 05/20 17:43
→ jameschiou: 後來寫小工具都改用其他語言 python部署太痛了 05/20 17:44
推 panex0845: 打包後檔案太大通常是引用套件(package)的時候導入了 05/21 05:50
→ panex0845: 沒有使用的模組(model) 要縮小檔案 只能一個一個引用 05/21 05:51
→ panex0845: 需要的模組 05/21 05:51
→ panex0845: 不過這方法效果有限 因為套件還有相依性(dependency) 05/21 05:56
→ panex0845: 的問題 搞不好引用一個模組 雜七雜八的都相依進來了 05/21 05:57
推 tsoahans: 先用cython轉成c程式碼再用gcc編譯 這樣會小很多 05/21 11:40
→ tsoahans: 但是有用到的python函式庫還是要另外裝 05/21 11:41
推 s860134: numpy pandas 好像就100以上了 05/22 18:25
→ s860134: 輪子很重 只是你在車上沒感覺 05/22 18:25
→ s860134: pyinstaller 有參數強制去除套件引用 05/22 18:26
→ s860134: --exclude-moduleXCLUDES 05/22 18:28
→ s860134: 之前包 pil 做圖片處理也是包到 numpy-core 變100多mb 去 05/22 18:29
→ s860134: 掉後好像剩 10幾mb 05/22 18:29
→ s860134: 包的成品不弄成 one file 可以看一下是哪個東西吃容量 05/22 18:31
推 ptta: 我也遇過,後來改用golang 05/23 19:53
推 lycantrope: 只能推golang了 05/24 12:16
→ kenduest: 有許多東西要用 go 來寫不方便,pandas,numpy 替代方案? 05/24 12:24
→ zxzx8059: 看前同事是用虛擬環境來包 05/24 21:59
推 brt: 使用 venv 才能乾淨打包 05/25 15:10
推 yoyo178134: 欸寫py一定要確認環境欸 05/25 18:14
→ yoyo178134: 程式輸出requirement.txt 05/25 18:14
→ yoyo178134: 開venv然後source 後 05/25 18:14
→ yoyo178134: pip3 install -r requirement.txt 05/25 18:14
推 ToastBen: 3樓正解 05/26 01:12