[Python]使用 pyinstaller 套件打包 .py 檔
當我們今天寫好一個 .py 檔,要給使用者執行時當然可以幫使用者在他們的電腦下載 Python 等執行程式時需要的套件,但是,很麻煩!!!
不可能每次有一個新的使用者就要重新安裝一次 Python,還要安裝套件(更不要說有時候安裝套件會碰到一些問題),且要執行 .py 檔對於不會使用 terminal 或是 cmd 的人來說可能會選擇放棄,這就減少了讓妳/你的程式給更多人使用的機會。
而 pyinstaller 是一個可以把 .py 打包成一個 .exe 檔的工具,讓使用者只要點兩下就能執行妳/你寫好的 Python 檔案。
前提
pyinstaller可以在 Windows、MacOS、Linux 上使用,但是不是跨平台,所以如果今天使用者是 windows 那麼就必須要在 windows 作業系統底下產生 .exe 檔,若使用者是 macOS 那就必須要在 mac 底下打包產生執行檔。
安裝
Windows
pip install pyinstaller
Mac
sudo pip install pyinstaller
但我這邊在安裝時出現了一大串的錯誤,其中內容包括
[Errno 1] Operation not permitted
後來我參考這裡把指令改成
sudo pip install pyinstaller --upgrade --ignore-installed
就成功安裝了。
安裝好後,可以在 cmd 或是 terminal 上輸入 pyinstaller 確認。
打包 .py 檔
假如現在要打包一個 test.py 檔
Windows
pyinstaller -F test.py
完成後會產生三個檔案,
- build 資料夾
- dist 資料夾
- test.spec 檔
而我們需要的 test.exe 會單獨在 dist 資料夾裡,如果要給其他 Windows 使用者執行 test.py 這支檔案,只需要給他們 .exe 就行了。
如果 test.py 這支程式是會產生一個檔案,例如 .csv 檔案,則這檔案會直接儲存在和 test.exe 同一個路徑底下。
Mac
Mac的操作基本上和 Windows 指令一樣,
pyinstaller -F test.py
打包完後產生出來的檔案也會一樣。
但如果執行 .exe 檔會產生檔案,這時候會發現檔案沒有出現在和 .exe 同一個路徑底下。而是會在 /Users/yourusername 底下。
可以試試看在 .py 檔裡增加一行
print os.getcwd()
會發現使用 .exe 執行的結果就會是 /Users/yourusername,所以檔案才會直接產生在這路徑底下。
但我想要讓檔案直接產生在桌面,因此我的方法是加上這行
os.chdir('/Users/'+os.getlogin()+'/Desktop')
讓路徑直接換到桌面,這樣儲存檔案就會產生在桌面上了。
常用參數
- pyinstaller -h 查看參數
- -F 打包成一個exe文件
- –icon=圖標路徑
關於 pyinstaller 套件,這個部落格我覺得說明蠻詳細的。