將 python 程式封裝,使用者將更便於使用,而不需擔心設定 python 環境
macOS 還好說,系統有附帶 python,但 windows 系統下要執行就麻煩了
最近剛好有需求,故對此研究,不料踩到微軟精心準備的陷阱,浪費不少時間
因此寫下此筆記作為奮戰紀錄
本文以生成 windows 執行檔為前提,著重在環境設定的問題排解
=> 想更好的閱讀體驗,請到Notion 同篇筆記(排版略有差異)
要封裝 python 程式,首先環境要正確
感覺很直覺,但實際上坑還蠻深的,陷進去卻不知道錯在哪
所以請就下面幾點檢視一下自己的環境 >w<
終端機環境必須是 Windows 系統 (生成 windows 執行檔為前提)
pyinstaller 生成的執行檔與系統掛勾
因此,若想用 pyinstaller 生成「能在windows系統下執行的執行檔」
就必須在 windows 系統中使用 pyinstaller 處理
Shell 與 Terminal 自不用說,因為環境本來就不是 windows
至於 WSL,也就是依附在 Win10 下的 Linux base 附屬系統
這個附屬系統屬於 Linux 系統,用起來會比 PowerShell 順心,但在此派不上用場
備註:如果打包成品要在 x32 系統執行,那就必須在 x32 系統上打包,反之則不用
Python 來源有限制
pyinstaller 的 github 頁面有提到,使用 Microsoft Store 版本的 python 會導致權限錯誤
根據實測,使用 Microsoft Store 除了權限錯誤,還需要解決環境變數問題
雖說是手把手,但我已先假設你用的是 windows 10
已經正常安裝與設定的略過
重申一次,不可用 Microsoft Store 安裝的 python,這是孔明的陷阱
開啟 PowerShell (不知如何開啟,請參照 「陸、附錄 在指定目錄位置開啟 PowerShell」)
安裝 pyinstaller
pip install pyinstaller
確認版號,出現版號即表示安裝成功
pyinstaller --version
若 pyinstaller 安裝成功可顯示版號,可跳過此章節
終於來到正題了
pyinstaller -F <python file> # 打包成單執行檔,適合小檔
pyinstaller -D <python file> # 打包成多個文件,適合框架類程式
# 備註:有時你會需要用下面的方式執行
python -m PyInstaller -F <python file>
python -m PyInstaller -D <python file>
意下屬於查找工具,如果已經正常運行,就不需要看囉
win
+ e
開啟檔案總管,選擇希望終端開啟時的目錄位置Shift
+ 滑鼠右鍵
,開啟選單如果安裝時忘記設定環境變數,會導致安裝 pyinstaller 後找不到該指令
可以使用 python 安裝程式來設定
到 python 官網 下載最新版的 python 安裝程式
執行安裝程式,勾選「Add Python to environment variable」,執行安裝
這篇非常有用!
我已經用過pyinstaller很多次但還是常採坑
最新的低級錯誤是我用虛擬環境,但沒注意到有個library是裝在外面
pyinstaller沒辦法打包不在虛擬環境內安裝的library所以就出現問題
裝在虛擬環境裡面就好了
感謝客官喜愛