Menggabungkan Fail Data dengan PyInstaller (--onefile)
Menggabungkan fail data dalam satu fail boleh laku tunggal (--onefile) boleh menjadi penyelesaian praktikal untuk penggunaan aplikasi. Walau bagaimanapun, menghadapi masalah semasa menggunakan pilihan ini boleh mengecewakan. Dalam panduan ini, kami akan menangani masalah biasa di mana fail luaran seperti imej dan ikon gagal dimuatkan dengan betul walaupun disertakan dalam fail .spec.
Gambaran Keseluruhan Masalah
Penanya tidak dapat menggabungkan imej dan ikon ke dalam PyInstaller boleh laku mereka menggunakan pilihan --onefile. Walaupun aplikasi berfungsi dengan betul dengan --onedir, menggunakan --onefile mengakibatkan fail luaran tidak ditemui. Isu ini berterusan walaupun fail terdapat dalam direktori sementara yang dibuat semasa pelaksanaan boleh laku.
Penyelesaian
Dalam versi lama PyInstaller, pembolehubah persekitaran ditetapkan kepada tunjuk ke lokasi fail yang digabungkan. Walau bagaimanapun, dalam versi yang lebih baharu, tingkah laku ini telah berubah. Sebaliknya, laluan kini ditetapkan sebagai sys._MEIPASS.
Untuk menyelesaikan isu ini, kemas kini kod anda untuk menggunakan sys._MEIPASS untuk mengakses fail yang digabungkan:
import sys 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 menggunakan kemas kini ini pendekatan, anda boleh mengakses fail yang digabungkan dengan pasti dalam boleh laku PyInstaller anda, walaupun menggunakan pilihan --onefile.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Fail Data Berpakatan dengan Betul dalam PyInstaller --onefile Executable?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!