使用--onefile 進行PyInstaller 資料捆綁:解決缺少的資源
在使用PyInstaller 建立緊湊的可執行檔(EXE) 的檔案(EXE) 的檔案(EXE)過程中,使用'--onefile'標誌,使用者在捆綁其他資料檔案(例如圖像或圖示)時經常遇到挑戰。當編譯的 EXE 無法找到引用的資源時,就會出現此問題。
Shish 提出的一種特殊解決方案是在腳本中的 run 方法之前設定環境變數:
import os os.environ["IMAGE_PATH"] = os.path.join(os.path.dirname(os.path.abspath(__file__)), "images")
但是,這種方法可能不適用於較新版本的 PyInstaller。相反,另一個解決方案是利用sys._MEIPASS 變量,它提供PyInstaller 在運行時創建的臨時目錄的路徑:
def resource_path(relative_path): """ Get absolute path to resource, works for dev and for PyInstaller """ try: # PyInstaller creates a temp folder and stores path in _MEIPASS base_path = sys._MEIPASS except Exception: base_path = os.path.abspath(".") return os.path.join(base_path, relative_path)
透過定義這樣的自訂函數,您可以動態檢索資料文件的絕對路徑,無論您是在開發模式下執行腳本還是作為已編譯的EXE 運行腳本。請記住在relative_path參數中指定資源的相對路徑。
以上是如何使用 PyInstaller 的 --onefile 選項正確地捆綁資料檔?的詳細內容。更多資訊請關注PHP中文網其他相關文章!