PyInstaller Data Bundling dengan --onefile: Menangani Sumber Hilang
Dalam proses mencipta boleh laku padat (EXE) dengan PyInstaller menggunakan Bendera '--onefile', pengguna sering menghadapi cabaran dalam menggabungkan fail data tambahan seperti imej atau ikon. Isu ini timbul apabila EXE yang disusun gagal untuk mencari sumber yang dirujuk.
Satu penyelesaian tertentu, seperti yang dicadangkan oleh Shish, melibatkan penetapan pembolehubah persekitaran sebelum kaedah larian dalam skrip:
import os os.environ["IMAGE_PATH"] = os.path.join(os.path.dirname(os.path.abspath(__file__)), "images")
Pendekatan ini, walau bagaimanapun, mungkin tidak berfungsi dengan versi PyInstaller yang lebih baharu. Sebaliknya, penyelesaian alternatif ialah menggunakan pembolehubah sys._MEIPASS, yang menyediakan laluan ke direktori sementara yang dibuat oleh PyInstaller semasa masa jalan:
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)
Dengan mentakrifkan fungsi tersuai seperti ini, anda boleh mendapatkan semula secara dinamik laluan mutlak ke fail data anda tidak kira sama ada anda menjalankan skrip dalam mod pembangunan atau sebagai EXE yang disusun. Ingat untuk menentukan laluan relatif kepada sumber anda dalam parameter relative_path.
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Fail Data dengan Betul dengan Pilihan --onefile PyInstaller?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!