exe解包和重新打包_pyinstaller打包的exe太大?你需要嵌入式python玄学 前提篇
pyinstaller打包一個(gè)exe動(dòng)輒幾十M幾百M(fèi) (特別是import pandas以后)
知乎上居然沒有人po這方面的”知識(shí)“(手動(dòng)狗頭)
查了很多關(guān)于reduce pyinstaller打包出exe大小的方法
列舉如下
玄學(xué)解法1 去除不必要的庫(kù)
當(dāng)我們用cmd/powershell 輸入這一段神秘代碼并且回車的時(shí)候
pyinstaller除了會(huì)打包test.py使之成為一個(gè)exe之外,還會(huì)創(chuàng)建一的后綴名為 .spec 的文件
長(zhǎng)這樣
打開以后大概是這個(gè)樣子
注意選中的這一行然后就可以愉快的在第13行的"[]"里面輸入自己不需要的庫(kù)啦
然后輸入這樣的代碼重新打包自己的exe
pyinstaller --clean -F test.spec不嫌麻煩的話一開始也可以這么寫:
pyinstaller --clean -F test.py --exclude-module matplotlib ^ ......(此處省略)ps:像requests這些庫(kù)啊 是和urllib有關(guān)聯(lián)的 這也就是為什么 exclude urllib可能會(huì)有錯(cuò)誤產(chǎn)生的原因啦
原文:
Python: Excluding Modules Pyinstaller?stackoverflow.com玄學(xué)解法2 共享依賴
package multiple exe(s) sharing the same dependencies:Using Spec Files
意思大概是打包多個(gè)exe用同一個(gè)”依賴庫(kù)“ [不懂裝懂,我也沒試過 再次狗頭]
有興趣的同學(xué)可以去看一下
原文:
Importing Python modules from a select location?stackoverflow.com玄學(xué)解法3 虛擬環(huán)境
pyinstaller喜歡把沒用的庫(kù)一起打包進(jìn)來
腦洞大開的程序猿(媛)們豈會(huì)輕易妥協(xié)?
我的python環(huán)境(虛擬)沒有這些庫(kù) 我看你怎么打包!
首先呢 我們需要一位名為virtualenv的同學(xué)幫助我們創(chuàng)建一個(gè)干凈的python虛擬環(huán)境
有請(qǐng)!!
pip install virtualenv然后要做的工作當(dāng)然就是創(chuàng)建一個(gè)虛擬環(huán)境啦
virtualenv example_env # 命名請(qǐng)隨意創(chuàng)建完成以后我們就會(huì)在python的Script文件夾里發(fā)現(xiàn)一個(gè) 與剛剛命名相同的文件夾
用cmd cd 到虛擬環(huán)境的Script目錄然后 輸入activate回車
ps: Win10下 當(dāng)?shù)诙问褂么谁h(huán)境報(bào)錯(cuò)時(shí) 應(yīng)該用管理員模式打開powershell提權(quán):錯(cuò)誤信息:
.activate : 無法加載文件 H:envprojectvenvScriptsactivate.ps1,因?yàn)樵诖讼到y(tǒng)上禁止運(yùn)行腳本。有關(guān)詳細(xì)信息,請(qǐng)參閱 https:/http://go.microsoft.com/fwlink/?LinkID=135170中的 about_Execution_Policies。所在位置 行:1 字符: 1
解決辦法:
1.以管理員身份打開PowerShell
2.執(zhí)行命令set-executionpolicy remotesigned
就可以開始愉快地pip安裝必要模塊 然后pyinstaller啦
原文:
How can I create the minimum size executable with pyinstaller??stackoverflow.com想在Pycharm等IDE中使用這個(gè)環(huán)境?
Python創(chuàng)建virtualenv(虛擬環(huán)境)方法?www.cnblogs.com玄學(xué)解法4 UPX壓縮大法
pyinstaller一直被人詬病以后自己也在反省為什么自己的工作質(zhì)量竟然···
然后人家就給了補(bǔ)救方法:開源的upx壓縮
the Ultimate Packer for eXecutables?upx.github.io并且在自己的打包代碼里留給了upx一席之地(雖然把upx扔到Script目錄里會(huì)默認(rèn)使用 但是有和沒有就是兩碼事對(duì)吧 upx:我也要面子的)
什么?還是會(huì)被罵? upx:這不怪我 我不背鍋
雖然使用upx打包時(shí)間會(huì)長(zhǎng)一些 但是為了縮小占用面積 為用戶省下少得可憐的流量(加粗表示對(duì)國(guó)產(chǎn)三大運(yùn)營(yíng)商的尊敬 傾斜烘托了令人哽咽的氛圍) 為了這個(gè)可以忍!
upx在壓縮:
Users/xxx/ 文件夾名字被我p掉了 下同但但但但但但是 報(bào)錯(cuò)是什么鬼?(可能是我臉黑或者是寫的程序里有upx不認(rèn)的代碼 不代表全部)
What the f**k?等了這么久就給我這個(gè)報(bào)錯(cuò)窗口?
google了一大頓也沒發(fā)現(xiàn)什么正確的解法 所以就....干脆放棄
[19/8/10補(bǔ)充] 有熱心的知友在評(píng)論區(qū)po了解決方法 upx還是很好用滴
以上四種[常規(guī)]操作呢 我還是喜歡第三種 錯(cuò)誤少見效快 再次但是! ——
現(xiàn)在是時(shí)候有請(qǐng)老大哥python-embedded出場(chǎng)了
既然pyinstaller不聽話 為什么不請(qǐng)出python-embedded來整治整治它呢?
python-embedded:在我面前你們都是渣渣下一期我們介紹嵌入式python開發(fā) 代替pyinstaller
總結(jié)
以上是生活随笔為你收集整理的exe解包和重新打包_pyinstaller打包的exe太大?你需要嵌入式python玄学 前提篇的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java集群_Kafka多节点分布式集群
- 下一篇: websocket python爬虫_p