Как мне скомпилировать мое приложение pyglet и все ресурсы в один исполняемый файл? - PullRequest
0 голосов
/ 27 сентября 2018

Я работаю над школьным проектом, где нам нужно создать приложение.Я использовал много файлов WAV, а также некоторые файлы PNG и GIF.Я использовал pyinstaller, чтобы собрать все в один исполняемый файл, и он выполняет свою работу.Однако, кажется, что упомянутые ресурсы не идут с этим.Поэтому я провел некоторое исследование и поэкспериментировал с файлом спецификации и в поле данных добавил:

datas=[('*.wav','.'),('*.png','.'),('*.gif','.')],

Затем я скомпилировал его снова.Я написал

py -m PyInstaller py -m PyInstaller Main.py --icon=icon.ico --name "Main" --distpath "Final Program"  --noconsole

и когда я открываю файл, он зависает.Как это исправить?Если я не делаю --onefile, он работает нормально.Если я делаю

py -m PyInstaller Main.py --icon=icon.ico --name "Main" --distpath "Final Program" --add-data "*.wav;." --add-data "*.png;." --add-data "*.gif;." --noconsole

Это также работает нормально, но создает папку.Есть ли способы сделать все это в один исполняемый файл?Я действительно новичок в pyinstaller, а также pyglet.

Спасибо.

1 Ответ

0 голосов
/ 23 октября 2018

Я полностью согласен с комментарием Code-Apprentice.Однако, возможно, вы захотите заглянуть в модуль zipfile.У вас будет только один файл ресурсов, вы сэкономите место и добавите небольшой слой незаметности, пока кто-нибудь не использует программу zip.Вам даже не нужно распаковывать свои ресурсы на диск, вместо этого используйте io.StringIO или io.BytesIO, чтобы сохранить их в памяти.

Время загрузки приминимум для начала, очевидно, увеличится.

...