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

【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