1. 程式人生 > 其它 >pyinstaller打包後程序體積太大,如何解決?

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