如何将我的 pyglet 应用程序和所有资源编译到一个 exe 文件中?

Posted

技术标签:

【中文标题】如何将我的 pyglet 应用程序和所有资源编译到一个 exe 文件中?【英文标题】:How do I compile my pyglet app and all the resources into one exe file? 【发布时间】:2018-09-27 14:03:15 【问题描述】:

我正在处理一个需要创建应用的学校项目。我使用了很多 wav 文件以及一些 png 和 gif 文件。我使用 pyinstaller 将所有内容编译到一个 exe 文件中,它完成了工作。但是,似乎提到的资源并没有随之而来。所以我做了一些研究,我弄乱了规范文件和数据字段,我补充说:

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 都很陌生。

谢谢。

【问题讨论】:

一般情况下,即使使用C++等编译语言,图像和其他资源文件也不会编译成EXE。只要看看你安装Microsoft Office或任何游戏的文件夹,你就会看到很多资源文件的文件夹。 【参考方案1】:

我完全同意 Code-Apprentice 的评论。但是,也许您想查看zipfile 模块。在有人使用 zip 程序之前,您将只有一个资源文件、节省空间并添加一点隐蔽性。您甚至不需要解压磁盘上的资源,而是使用io.StringIOio.BytesIO 将它们存储在内存中。

加载时间,至少在开始时,显然会增加。

【讨论】:

以上是关于如何将我的 pyglet 应用程序和所有资源编译到一个 exe 文件中?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Pyglet 将 gif 缩放到屏幕

如何使用 opengl 和 pyglet 设置剪切平面

如何将我自己的文化资源添加到 tfs 网络访问

如何使用 SDL_LoadBMP 编译的资源文件

编码和解码与pyglet一起使用的.gif文件,并使用pyinstaller制作成.exe文件

Pyglet:全屏时如何更改分辨率?