# python pyinstaller [TOC] ## 安裝 pyinstaller 打開命令提示字元(可按 Win + R,輸入 cmd 然後 Enter): ``` pip install pyinstaller ``` ## 移動到你的遊戲資料夾 假設你的 Python 程式叫做 game.py,而且 a_million_dreams.mp3 和 a_million_dreams_beats.txt 都在同個資料夾 輸入到終端機: ``` cd C:\Users\你的名字\Desktop\你的遊戲資料夾 ``` ## 打包成 .exe 輸入以下指令來打包: ``` pyinstaller --onefile --noconsole 你的遊戲檔案名稱.py ``` 參數說明: --onefile:打包成單一 .exe 檔 --noconsole:不要顯示黑色命令視窗(遊戲是用視窗模式) ## 打包指令如下(請在 S_test1 資料夾中執行): 將所有檔案加入EXE檔案當中 在命令提示字元輸入以下指令(這是單行!): ``` pyinstaller --onefile --noconsole --add-data "a_million_dreams.mp3;." --add-data "a_million_dreams_beats.txt;." main.py ``` 📌 注意: * --add-data "檔案路徑;目的資料夾":這樣會把檔案打包進 .exe,並在執行時「解壓」到暫存資料夾中。 * ;.:代表解壓到目前工作資料夾 * 如果你是 Mac 或 Linux,分號 ; 要改成冒號 :+1: ## 適性修改 修改程式碼以適應 PyInstaller 的打包方式: 加入這段程式碼來取得資源檔案的正確路徑(放在 import 區域下面): ```python= import sys import os def resource_path(relative_path): try: base_path = sys._MEIPASS # PyInstaller 專用暫存資料夾 except Exception: base_path = os.path.abspath(".") return os.path.join(base_path, relative_path) ``` 接著修改以下兩行: ```python= pygame.mixer.music.load(resource_path("a_million_dreams.mp3")) beats = load_beat_times(resource_path("a_million_dreams_beats.txt")) ``` ### 🔆要再進行一次上一步,進行打包 ## 打包成功後 .exe 路徑 打包完成後,你會在: ``` S_test1/dist/main.exe ``` 這個 main.exe 已經內含音樂與節拍資料,可以獨立執行,不需要再放 .mp3 或 .txt 檔!