iT邦幫忙

4

Python 生成 Windows 執行檔教學 (Pyinstaller, PowerShell)

  • 分享至 

  • xImage
  •  

壹、前言

將 python 程式封裝,使用者將更便於使用,而不需擔心設定 python 環境
macOS 還好說,系統有附帶 python,但 windows 系統下要執行就麻煩了
最近剛好有需求,故對此研究,不料踩到微軟精心準備的陷阱,浪費不少時間
因此寫下此筆記作為奮戰紀錄
本文以生成 windows 執行檔為前提,著重在環境設定的問題排解
=> 想更好的閱讀體驗,請到Notion 同篇筆記(排版略有差異)

貳、環境確認

要封裝 python 程式,首先環境要正確
感覺很直覺,但實際上坑還蠻深的,陷進去卻不知道錯在哪
所以請就下面幾點檢視一下自己的環境 >w<

  1. 終端機環境必須是 Windows 系統 (生成 windows 執行檔為前提)

    • ❌ WSL (Windows Subsystem Linux)
    • ❌ Linux 虛擬機的 Shell
    • ❌ macOS 的 Terminal
    • ✅ Windows PowerShell
    • ✅ CMD (命令提示字元)

    pyinstaller 生成的執行檔與系統掛勾
    因此,若想用 pyinstaller 生成「能在windows系統下執行的執行檔」
    就必須在 windows 系統中使用 pyinstaller 處理
    Shell 與 Terminal 自不用說,因為環境本來就不是 windows
    至於 WSL,也就是依附在 Win10 下的 Linux base 附屬系統
    這個附屬系統屬於 Linux 系統,用起來會比 PowerShell 順心,但在此派不上用場
    備註:如果打包成品要在 x32 系統執行,那就必須在 x32 系統上打包,反之則不用

  2. Python 來源有限制

    • ❌ Microsoft Store 安裝的 python
    • ✅ 由 python 官網下載安裝的 python

    pyinstaller 的 github 頁面有提到,使用 Microsoft Store 版本的 python 會導致權限錯誤
    根據實測,使用 Microsoft Store 除了權限錯誤,還需要解決環境變數問題

參、手把手設定環境

雖說是手把手,但我已先假設你用的是 windows 10

a. 安裝 python

已經正常安裝與設定的略過
重申一次,不可用 Microsoft Store 安裝的 python,這是孔明的陷阱

  1. 到 python 官網 下載最新版的 python 安裝程式
    根據 pyinstaller 的 github 頁面,需要 python 3.5-3.8,實測 3.9 也可以運行
  2. 執行安裝程式,勾選「Add Python x.x to PATH」,執行安裝

b. 安裝 pyinstaller

  1. 開啟 PowerShell (不知如何開啟,請參照 「陸、附錄 在指定目錄位置開啟 PowerShell」)

  2. 安裝 pyinstaller

    pip install pyinstaller
    
  3. 確認版號,出現版號即表示安裝成功

    pyinstaller --version
    

肆、疑難排解

若 pyinstaller 安裝成功可顯示版號,可跳過此章節

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

  • 以上錯誤,可能是因為「python 環境變數未設定成功」,因此找不到已安裝的指令。
  • 請遵循「陸、附錄 設定 python 環境變數」設定

PermissionError: [Errno 13] Permission denied: ...

  • 以上錯誤,可能是因為「使用 Microsoft Store 安裝的 python」
  • 請遵循「參、手把手設定環境 a. 安裝 python」設定 python

伍、使用 Pyinstaller 打包

終於來到正題了

  1. 在要打包的程式目錄開啟 PowerShell (不知如何開啟,請參照 「陸、附錄 在指定目錄位置開啟 PowerShell」)
  2. 打包
    pyinstaller -F <python file>   # 打包成單執行檔,適合小檔
    pyinstaller -D <python file>   # 打包成多個文件,適合框架類程式
    
    # 備註:有時你會需要用下面的方式執行
    python -m PyInstaller -F <python file>
    python -m PyInstaller -D <python file>
    
  3. 現在可以在生成的 dist 資料夾中找到打包的程式

陸、附錄

意下屬於查找工具,如果已經正常運行,就不需要看囉

在指定目錄位置開啟 PowerShell

  1. win + e 開啟檔案總管,選擇希望終端開啟時的目錄位置
  2. Shift + 滑鼠右鍵,開啟選單
  3. 開啟 PowerShell

設定 python 環境變數

如果安裝時忘記設定環境變數,會導致安裝 pyinstaller 後找不到該指令
可以使用 python 安裝程式來設定

  1. 到 python 官網 下載最新版的 python 安裝程式

  2. 執行安裝程式,勾選「Add Python to environment variable」,執行安裝



圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
peter1125
iT邦新手 5 級 ‧ 2022-12-01 21:56:05

這篇非常有用!
我已經用過pyinstaller很多次但還是常採坑
最新的低級錯誤是我用虛擬環境,但沒注意到有個library是裝在外面
pyinstaller沒辦法打包不在虛擬環境內安裝的library所以就出現問題
裝在虛擬環境裡面就好了

秋米苗 iT邦新手 5 級 ‧ 2023-03-01 02:58:01 檢舉

感謝客官喜愛

我要留言

立即登入留言