无法弄清楚如何将自定义资源打包到我的可执行文件中,我找到了一些信息,https://groups.google.com/forum/#!msg/pyinstaller/HcTTyFlPJHA/kqd4wnm7JhkJ
我的 Assets 文件夹包含 tkinter GUI 的图像,“assets\images.png”。想要包含在可执行文件本身中的东西。
所以我将这一行包含在我的 .spec 文件中的“a.datas”下。
Tree(' Assets ', prefix=' Assets \'),
然后用PyInstaller“pyinstaller.py MipMapper-V1.2\MipMapper-V1.2.spec”重新打包。这会生成一个不包含 Assets 的 exe。我可以将 Assets 文件夹复制到exe的目录中并且它可以工作。是我的代码吗?它指的是“ Assets ”事物的相对路径。所以我收到 -1 返回错误。它找不到 Assets 。感谢您提前提供的任何帮助。
最佳答案
Adding data files下一节 using data files from module在 pyinstaller 文档中。
是的,您应该在代码中使用包相对路径而不是普通相对路径。因为包的提取不是相对于执行二进制文件,而是在临时目录中的某个位置。查找 pkg_resources
包。例如这个函数:
dir = resource_filename('your_package', 'app/samples')
要阐明如何在规范中定义数据,请查看示例:
a = Analysis(['../trunk/__main__.py']
...
datas=[('../src/trunk/your_package/app/samples/data.bin', 'your_package/app/samples')],
...
关于Pyinstaller-在可执行文件中包含 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53526620/