pyinstaller打包后程序體積太大,如何解決?


上周寫了個小工具,打包成exe。因為除了寫Python的,絕大多數人電腦里都沒有Python編譯器,所以打包成exe,讓用戶(windows)雙擊就可以打開,也算是必備技能了。

直接用Pyinstaller,打開cmd:

pyinstaller -F E:\pycharm\huizong\huizong_excel.py

(-F 是打包成一個文件)

等了好久,終於完成打包,一看文件,嚯,40M!怪不得打包了這么久...

上網查了下資料,有人說,pycharm里安裝了很多庫,打包的時候打包了很多不必要的模塊進去,要用純凈的Python來打包。

有點道理,看到網上說用pipenv可以解決。雖然還不懂pipenv的強大之處,但知道它是個管理虛擬環境和包的工具,於是想着能不能用pipenv來創建一個新的python編譯器以運行pyinstaller進行打包。

於是趕緊上網查了一下,pipenv pyinstaller。並操作如下:
打開cmd:

#建立虛擬環境
pipenv install
#進入虛擬環境
pipenv shell
#安裝模塊
pip install 小工具.py里面用到的模塊(os,time,shutil,sys等模塊不需要安裝,也安裝不起)
#打包的模塊也要安裝
pip install pyinstaller
#開始打包
pyinstaller -F E:\pycharm\huizong\huizong_excel.py

打包完成,一看大小,8M!成功!

注意:

關鍵點就一個:要在虛擬環境里安裝pyinstaller

如果你沒有在虛擬環境中安裝pyinstaller,你同樣可以使用pyinstaller命令,但是調用的是你系統原本的那個python編譯器,內含很多關聯庫,導致即使在虛擬環境中,你打包的exe文件仍然非常大。

另外一點要注意的是:要在虛擬環境里安裝好你py文件中調用的庫,不然打包出來也沒法正常運行。

另外還要注意一點:pipenv 安裝的虛擬環境是在:C:\Users\Michael.virtualenvs 下,並且在該目錄下會默認生產一個文件夾Michael-ov7d_vym來存放你安裝的模塊。如果,你在文件窗口路徑處,輸入cmd,打開命令窗口,執行進入虛擬環境命令:pipenv shell。那么在C:\Users\Michael.virtualenvs 下會生產一個文件夾,名稱就是路徑上的最后一個文件夾名。舉例:在E:\pycharm\huizong 的窗口地址欄,輸入cmd,再執行pipenv shell,在C:\Users\Michael.virtualenvs 下會生產一個huizong-ttnpT_7h文件夾。
這當然是有好處的,不同的程序,需要單獨安裝不同的模塊包,再打包的時候,就不用臃腫。

另外,如果在打包過程中,遇到運行時錯誤:Permission denied: 'C:\WINDOWS\system32\api-ms-win-crt-stdio-l1-1-0.dll',需要修改cmd的權限,以管理員身份運行。具體操作參考:https://blog.csdn.net/weixin_41357300/article/details/91435327

參考鏈接原文:https://www.zhihu.com/question/268397385


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM