上周寫了個小工具,打包成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