因為最近要用到 Python 腳本,所以自己學習了一下,順便學習如何把它打包成 .exe 可執行文件,達到雙擊運行的效果,網上找了資料,保存下來學習用,原文出處:https://baijiahao.baidu.com/s?id=1606400855559470971&wfr=spider&for=pc
大家都知道,Python是一種腳本語言,也就是解釋型的語言,需要解釋器來進行解釋以后才可以執行,而Python源代碼需要在Python虛擬機上面運行,但是我們做好的程序,不可能給用戶使用的時候還讓他安裝一個Python環境,所以今天我們講解如何將Python程序打包為exe可執行文件。提示: 以下的教程都是再有Python環境的基礎上的,如果沒有安裝,請先參考:Python安裝以及環境變量配置
一、安裝pyinsatller
打開命令行窗口,輸入如下指令:
pip3 install pyinstaller
然后靜待pyinstaller自動安裝好
此外還要安裝好 win32api ,可以用命令 pip install pypiwin32 或 pip3 install pypiwin32 或 python -m pip install pypiwin32 直接下載安裝,如果沒有安裝好這個,生成的exe文件的時候,會報錯,是無法生成 .exe 文件的,此外還要注意win32api的版本要跟你的Python編譯器的版本一致,不然安裝 win32api 時會找不到 python 注冊表
二、使用pyinstaller打包Python程序
①在你的Python程序文件夾上(不點進去)按住shift並且右鍵,在彈出的選項中點擊"在此處打開命令行窗口"或者“在此處打開PowerShell窗口” 或者先進入命令行窗口,然后使用cd指令進入程序文件夾
②輸入以下指令,開始打包
pyinstaller -F (-i icofile) -w filename
filename表示你的Python程序文件名
-w 表示隱藏程序運行時的命令行窗口(不加-w會有黑色窗口)
括號內的為可選參數,-i icofile表示給程序加上圖標,圖標必須為.ico格式
icofile表示圖標的位置,建議直接放在程序文件夾里面,這樣子打包的時候直接寫文件名就好
個人實操說明:這里我實際操作的時候添加圖標就無法生成,不加圖標按下面的命令生成就可以,具體原因待以后補充
如果我要添加圖標就報下圖的錯誤,這里我已經安裝好了WIN32api了的,具體造成錯誤原因沒還沒找到
補充:
上面說的無法生成 ico 圖標問題,已經解決,測試是因為我的文件名后綴沒有輸入,要先生成 ico 圖標,再生成 exe 運行程序的,測試指令如下
輸入完成,按回車,就會開始自動打包了,第一次打包過程可能比較緩慢
輸入示例:
pyinstaller -F-i tello.ico -w love.py
然后我們進入到程序目錄里面會再看到一個名稱為dist目錄,打包好的exe程序就在里面
注意:如果原本的程序中使用到了相應的資源,需要復制到該目錄下,否則程序會無法運行
比如我這里在程序中使用到了love.png這個圖,所以就需要將該文件放到dist目錄下
最后補充一個 pyinstaller 的各個參數表
參數 | 含義 |
---|---|
-F |
指定打包后只生成一個exe格式的文件 |
-D |
–onedir 創建一個目錄,包含exe文件,但會依賴很多文件(默認選項) |
-c |
–console, –nowindowed 使用控制台,無界面(默認) |
-w |
–windowed, –noconsole 使用窗口,無控制台 |
-p |
添加搜索路徑,讓其找到對應的庫。 |
-i |
改變生成程序的icon圖標 |
關於有圖片音頻文件時打包成 exe 的補充:
對於程序里引用了圖片跟音頻的python,打包之后會出現閃退情況,或者打開exe文件失敗的情況,這時候只要把程序里的圖片引用路徑改為絕對路徑,並在前面加 r 即可,如下所示:
background_1 = pygame.image.load(r'E:\Work_file\Python_test\no.jpg').convert()