項目 widget-area-1 尚未註冊或是沒有一個 view.php 檔案.
項目 widget-area-1 尚未註冊或是沒有一個 view.php 檔案.
項目 search-input 尚未註冊或是沒有一個 view.php 檔案.

【PyQt5】Day 3 – 用 pyinstaller 將 python 程式打包,把每天的成果分享給你的親朋好友

看完這篇文章你會得到的成果圖

因為 PyQt5 要學的東西太多,
我們先來學打包 python 好了,(逃避要學東西太多的現實)
這樣就可以把每天的學習成果分享給親朋好友囉!

打包的重點就在於,我們只要打包後,這個程式會變成單一執行檔,
而且可以橫跨「windows, mac, ubuntu」的「同作業系統電腦」使用,
還不用特別安裝「python」也能執行哦!
(想想你之前下載遊戲的時候,有特別還要去安裝什麼程式語言嗎XD)

  • 更新:這邊我一開始有點誤會了,打包後的程式是在「同OS上能夠直接執行,不能夠跨作業系統」。
    也就是說如果是同樣 windows 的電腦,我包好之後可以直接給另外一台 windows 的電腦使用,
    mac 電腦對 mac 電腦也是,以此類推。

  • 至於「跨作業系統」自然是不行的,會需要至少一台該作業系統的電腦重包
    (可以想像一般我們安裝軟體的時候,都會有很多作業系統的版本要你選,因為不同作業系統運作程式的邏輯不同,需要依照該作業系統的運作邏輯將程式打包起來。)

安裝 pyinstaller

老樣子的一行解決 (我想大家應該也都很習慣了(吧)…?)

pip install pyinstaller

補充 – anaconda 安裝 pyinstaller 的方法 (感謝網友:steven yang 補充)

如果使用 pip 安裝 pyinstaller 會出現以下問題:

無法辨識’pyinstaller’ 詞彙是否為Cmdlet、函數、指令檔或可執行程式的名稱) 的報錯。

這時如果有搭配 anaconda 的環境使用,可以採取在 anaconda terminal 輸入的以下方法:

conda install -c conda-forge pyinstaller

有些東西在 anaconda 上用 pip 會不能運作… ( <- 我自己也踩過很多次這個坑XDD )
感謝網友:steven yang 幫忙補充 ^ ^

來打包昨天的程式碼吧!

昨天我們完成的 UI.py,
我們可以直接在終端機輸入

pyinstaller -F UI.py

結果

打包的過程,會稍微需要等一下,
中途會跳出一堆東西,可以順便看看有沒有錯誤。

最後等待程式跑完後,我們去同一個資料夾底下的 dist,裡面會看到一份「UI.exe」 。

我們打開來試試看吧!

看起來就跟昨天的結果一模一樣呢!!!
(請忽略上面的顏色XD,只是心情好剛好去改 windows 配色,那顏色不是用 Qt 做的XD)

小結

這份「UI.exe」我們就可以拿來分享給全世界你的親朋好友囉!
只要是有「同作業系統 (windows, mac, ubuntu)」的電腦,不用特別安裝環境應該都能夠打開!

Reference

⭐Python PyQt5 相關文章整理⭐:
⭐基礎知識與架構篇⭐:
1.【PyQt5】Day 1 – 安裝 PyQt,建立自己的第一支 PyQt5 程式
2.【PyQt5】Day 2 – 利用 Qt designer 建立第一支有自己介面的 PyQt5 程式
3.【PyQt5】Day 4 – 重要的 Qt 程式邏輯觀念,務必先有此觀念後面才會懂自己在幹嘛
4.【PyQt5】Day 5 – 開始來設計我們的 controller.py,改以「程式角度」來說明如何建立 PyQt 的系統
⭐基本元件應用篇⭐:
1.【PyQt5】Day 6 – 我們的第一個 output 手段 – Qlabel
2.【PyQt5】Day 7 – 我們的第一個 input 手段 – QPushButton
3.【PyQt5】Day 8 – 我們的第二個 input 手段 – QLineEdit
4.【PyQt5】Day 9 – 以 QLineEdit, QTextEdit, QPlainTextEdit 作為文字的輸入
6.【PyQt5】Day 14 - 使用 QSlider 製作可拖曳的滑條
8.【PyQt5】Day 19 - 使用 QProgressBar,製作進度條的功能
⭐介面系統控制篇⭐:
5.【PyQt5】Day 10 – 以 QFileDialog 讀取