【建置環境說明】
我的開發環境是win11,python是3.10.7版本,編碼的工具是Visual Studio Code(簡稱vscode)。
【打包前提說明】
需先完成 python kivy app 開發(可參考:APP開發),本機環境測試ok,本篇範例在專案資料夾裡有main.py、countinmind.kv、CountInMindIco.ico以及font資料夾(裡面有TW-Kai-98_1.ttf文字檔案)【本篇說明】
為了能將完成的作品直接在Windows電腦上安裝使用,所以要打包成Windows能執行的.exe執行檔案。本篇是使用PyInstaller打包,PyInstaller是一個用於將Python程式打包成獨立可執行檔案的工具。
打包步驟:
1.安裝或更新 PyInstaller,使用 PyInstaller作為打包工具,在終端機(CMD)輸入以下指令: pip install pyinstaller或pip install --upgrade pyinstaller
2.先新增一個空白資料夾,可任意命名,然後將其放在main.py檔案旁邊。(我命名為 countinmind_exe)
3.開啟命令列 shell或是命令提示字元 CMD(我使用的是 vscode終端機)導航至剛剛(step 2)建立的資料夾。於是,我在vscode中輸入:cd C:\Users\CFuser\Desktop\python\Kivy\CountInMindApp\countinmind_exe

4.再新增一個資料夾(我命名為 countinmind_win11),將先前開發專案中打包所需的檔案複製到此資料夾中。示範:複製main.py、countinmind.kv、CountInMindIco.ico以及font資料夾,裡面放著套用文字的.ttf檔案。
若要為應用程式新增圖標,可將 .ico 檔案也複製到此資料夾中。(可以在www.convertico.com將圖片轉換為 .ico 檔案)

5.然後在 shell 或是CMD、vscode中輸入以下指令:python -m PyInstaller --name YourAppName -w --icon TheDirectoryToYour.icoFile (空格)TheDirectoryToYour.pyFile,並按 Enter 鍵。
對照:
例如我的是: python -m PyInstaller --name CountInMind -w --icon C:\Users\CFuser\Desktop\python\Kivy\CountInMindApp\countinmind_win11\CountInMindIco.ico C:\Users\CFuser\Desktop\python\Kivy\CountInMindApp\countinmind_win11\main.py

6.完成後,會顯示completed successfully。現在轉到創建的資料夾(step 2),右鍵點擊該.spec文件,然後用記事本(或任何其他文字編輯器)打開它

7.當打開 .spec 檔案時,它應該如下圖,現在在頂部空白處新增:from kivy_deps import sdl2, glew及block_cipher = None

8.現在找到該段內容 coll = COLLECT(exe, 並新增以下:Tree('ThePathToTheFolderYouMadeInStep4'),。
例如:coll = COLLECT(exe, Tree('C:\Users\CFuser\Desktop\python\Kivy\CountInMindApp\countinmind_win11\'),

9.並在其下方找到該a.datas 那段,並在下方添加:*[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)], 使其位於 a.datas,和 strip=False之間

10.儲存檔案並關閉。最後,返回shell 或CMD 或終端機並輸入:python -m PyInstaller YourAppName.spec並按 Enter 鍵。例如:python -m PyInstaller CountInMind.spec

11.有時候會顯示:WARNING: The output directory "YourDirectory" and ALL ITS CONTENTS will be REMOVED! Continue? (y/N),只要輸入 y 然後按enter
12.建置完成後, .exe 檔案將位於Step 2建立的資料夾中。我的位於: C:\Users\CFuser\Desktop\python\Kivy\CountInMindApp\countinmind_exe\dist\CountInMind

【本篇小結】
接下來篇章會分享打包時的問題及解決方法。
【本篇結束】
在自學路上遇到困難是很正常的事,只要堅持到底,相信就會有所成果,期勉大家一同努力。