Pyinstaller在--onefile --windowed应用程序中嵌入图像文件夹

问题描述 投票:1回答:1

我正在尝试将包含图像的文件夹嵌入到生成的(使用PyInstaller)可执行文件中。但这对我不起作用。即使只有一个简单的图像!

我的[[main.spec文件中的datas变量看起来像这样:

datas=[ ('C:\\Users\\<user>\\dir1\\dir2\\MyApp\\images\\myicon.png', 'images') ],
根据文档:

第一个字符串指定文件或该文件现在在此系统中的位置。第二个指定要包含的文件夹的名称文件在运行时。

在python文件中,我像这样读取图像:

self.SetIcon(wx.Icon("images\\myicon.png"))

最后,这就是我使用PyInstaller在* .exe中打包所有内容的方式:

pyinstaller --onefile --windowed --icon=images\main32x32.ico main.spec

我收到以下错误:

Failed to load image from file "images\myicon.png"

有人可以告诉我我在做什么错吗? 
python windows wxpython pyinstaller
1个回答
3
投票
[要将文件嵌入可执行文件时,需要做两件事:

首先,将其与add-data一起添加到您的可执行文件中(就像您已经做的那样)。接下来,在运行时从提取的路径加载文件。

这里您正在add-data中加载文件,这是可执行文件旁边的路径,但文件不存在。运行时文件将被提取到临时目录中,例如images\\myicon.png,并且需要从该目录中加载。

您可以使用C:/Users/<user>/AppData/Local/Temp/_MEIXXX获取提取的文件所在的临时路径。您还可以创建一个函数来加载文件:

sys._MEIPASS

© www.soinside.com 2019 - 2024. All rights reserved.