玄學解法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的小夥伴或者打算學習的,可以私信小編“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文件夾裡發現一個 與剛剛命名相同的文件夾
用cmd cd 到虛擬環境的Script目錄然後 輸入active回車
就可以開始愉快地pip安裝必要模塊 然後pyinstaller啦
玄學解法4 UPX壓縮大法
pyinstaller一直被人詬病以後自己也在反省為什麼自己的工作質量竟然···
然後人家就給了補救方法:開源的upx壓縮
https://upx.github.io
並且在自己的打包代碼裡留給了upx一席之地(雖然把upx扔到Script目錄裡會默認使用 但是有和沒有就是兩碼事對吧 upx:我也要面子的)
什麼?還是會被罵? upx:這不怪我 我不背鍋
雖然使用upx打包時間會長一些 但是為了縮小佔用面積 為用戶省下少得可憐的流量(加粗表示對國產三大運營商的尊敬 傾斜烘托了令人哽咽的氛圍) 為了這個可以忍!
upx在壓縮:
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”即可領取。
閱讀更多 Python之眼 的文章