Python打包成exe文件太大了?推薦4種玄學解法

玄學解法1 去除不必要的庫

當我們用cmd/powershell 輸入這一段神秘代碼並且回車的時候

Python打包成exe文件太大了?推薦4種玄學解法

pyinstaller除了會打包test.py使之成為一個exe之外,還會創建一的後綴名為 .spec 的文件

長這樣

Python打包成exe文件太大了?推薦4種玄學解法

打開以後大概是這個樣子

Python打包成exe文件太大了?推薦4種玄學解法

然後就可以愉快的在第13行的"[]"裡面輸入自己不需要的庫啦

然後輸入這樣的代碼重新打包自己的exe

pyinstaller --clean -F test.spec

不嫌麻煩的話一開始也可以這麼寫:

pyinstaller --clean -F test.py --exclude-module matplotlib ^ ......(此處省略) 

ps:像requests這些庫啊 是和urllib有關聯的 這也就是為什麼 exclude urllib可能會有錯誤產生的原因啦

非誠勿擾:正在學習python的小夥伴或者打算學習的,可以私信小編“01”領取資料!

玄學解法2 共享依賴

package multiple exe(s) sharing the same dependencies:

Using Spec Files:https://pyinstaller.readthedocs.io/en/stable/spec-files.html#multipackage-bundles

意思大概是打包多個exe用同一個”依賴庫“

有興趣的小夥伴可以去看一下

玄學解法3 虛擬環境

pyinstaller喜歡把沒用的庫一起打包進來

腦洞大開的程序猿(媛)們豈會輕易妥協?

我的python環境(虛擬)沒有這些庫 我看你怎麼打包!

首先呢 我們需要一位名為virtualenv的同學幫助我們創建一個乾淨的python虛擬環境

有請!!

pip install virtualenv

然後要做的工作當然就是創建一個虛擬環境啦

virtualenv example_env # 命名請隨意

創建完成以後我們就會在python的Script文件夾裡發現一個 與剛剛命名相同的文件夾

Python打包成exe文件太大了?推薦4種玄學解法

用cmd cd 到虛擬環境的Script目錄然後 輸入active回車

就可以開始愉快地pip安裝必要模塊 然後pyinstaller啦

玄學解法4 UPX壓縮大法

pyinstaller一直被人詬病以後自己也在反省為什麼自己的工作質量竟然···

然後人家就給了補救方法:開源的upx壓縮

https://upx.github.io

並且在自己的打包代碼裡留給了upx一席之地(雖然把upx扔到Script目錄裡會默認使用 但是有和沒有就是兩碼事對吧 upx:我也要面子的)

Python打包成exe文件太大了?推薦4種玄學解法

Python打包成exe文件太大了?推薦4種玄學解法

什麼?還是會被罵? upx:這不怪我 我不背鍋

雖然使用upx打包時間會長一些 但是為了縮小佔用面積 為用戶省下少得可憐的流量(加粗表示對國產三大運營商的尊敬 傾斜烘托了令人哽咽的氛圍 為了這個可以忍!

upx在壓縮:

Python打包成exe文件太大了?推薦4種玄學解法

ps: upx可能會有dll丟失錯誤 請到此文章原文評論區找解決方法~

參考:

https://zhuanlan.zhihu.com/p/77028265

https://zhuanlan.zhihu.com/p/77317765

https://zhuanlan.zhihu.com/p/77338198

https://zhuanlan.zhihu.com/p/82287516

https://zhuanlan.zhihu.com/p/83302212

結尾

最後多說一句,小編是一名python開發工程師,這裡有我自己整理了一套最新的python系統學習教程,包括從基礎的python腳本到web開發、爬蟲、數據分析、數據可視化、機器學習等。想要這些資料的可以關注小編,並在後臺私信小編:“01”即可領取。


分享到:


相關文章: