pyinstaller打包一個exe動輒幾十M幾百M (特別是import pandas以后)
知乎上居然沒有人po這方面的”知識“(手動狗頭)

查了很多關於reduce pyinstaller打包出exe大小的方法
列舉如下
玄學解法1 去除不必要的庫
當我們用cmd/powershell 輸入這一段神秘代碼並且回車的時候

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

打開以后大概是這個樣子

然后就可以愉快的在第13行的"[]"里面輸入自己不需要的庫啦
然后輸入這樣的代碼重新打包自己的exe
pyinstaller --clean -F test.spec
不嫌麻煩的話一開始也可以這么寫:
pyinstaller --clean -F test.py --exclude-module matplotlib ^ ......(此處省略)
ps:像requests這些庫啊 是和urllib有關聯的 這也就是為什么 exclude urllib可能會有錯誤產生的原因啦
原文:
Python: Excluding Modules Pyinstaller玄學解法2 共享依賴
package multiple exe(s) sharing the same dependencies:Using Spec Files
意思大概是打包多個exe用同一個”依賴庫“ [不懂裝懂,我也沒試過 再次狗頭]
有興趣的同學可以去看一下
原文:
Importing Python modules from a select location玄學解法3 虛擬環境
pyinstaller喜歡把沒用的庫一起打包進來
腦洞大開的程序猿(媛)們豈會輕易妥協?
我的python環境(虛擬)沒有這些庫 我看你怎么打包!
首先呢 我們需要一位名為virtualenv的同學幫助我們創建一個干凈的python虛擬環境
有請!!
pip install virtualenv
然后要做的工作當然就是創建一個虛擬環境啦
virtualenv example_env # 命名請隨意
創建完成以后我們就會在python的Script文件夾里發現一個 與剛剛命名相同的文件夾

用cmd cd 到虛擬環境的Script目錄然后 輸入active回車
就可以開始愉快地pip安裝必要模塊 然后pyinstaller啦
原文:
How can I create the minimum size executable with pyinstaller?想在Pycharm等IDE中使用這個環境?
Python創建virtualenv(虛擬環境)方法玄學解法4 UPX壓縮大法
pyinstaller一直被人詬病以后自己也在反省為什么自己的工作質量竟然···
然后人家就給了補救方法:開源的upx壓縮
the Ultimate Packer for eXecutables並且在自己的打包代碼里留給了upx一席之地(雖然把upx扔到Script目錄里會默認使用 但是有和沒有就是兩碼事對吧 upx:我也要面子的)


什么?還是會被罵? upx:這不怪我 我不背鍋
雖然使用upx打包時間會長一些 但是為了縮小占用面積 為用戶省下少得可憐的流量(加粗表示對國產三大運營商的尊敬 傾斜烘托了令人哽咽的氛圍) 為了這個可以忍!
upx在壓縮:

但但但但但但是 報錯是什么鬼?(可能是我臉黑或者是寫的程序里有upx不認的代碼 不代表全部)


What the f**k?等了這么久就給我這個報錯窗口?
google了一大頓也沒發現什么正確的解法 所以就....干脆放棄
[19/8/10補充] 有熱心的知友在評論區po了解決方法 upx還是很好用滴
以上四種[常規]操作呢 我還是喜歡第三種 錯誤少見效快 再次但是! ——
現在是時候有請老大哥python-embedded出場了
既然pyinstaller不聽話 為什么不請出python-embedded來整治整治它呢?
python-embedded:在我面前你們都是渣渣
下一期我們介紹嵌入式python開發 代替pyinstaller
