关于python:在Pyinstaller中将图像添加到.spec文件

Add image to .spec file in Pyinstaller

有人知道如何修改用Pyinstaller的Makespec.py创建的.spec文件,使其在_MEIPASS2 Temp目录中包含图像数据吗?我希望能够向我的exe添加图标。我已经完成了这里写的内容,但是我只是不知道如何在.spec中添加数据。

我将此行添加到.spec文件的末尾:

1
a.datas += [('iconName.ico','DATA','C:\\\\Python26\\\\pyinstaller-1.5.1\\\\iconName.ico')]

这是我的规格文件(Collector.spec),我用过一个名为"Collector.py"的简单python程序。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# -*- mode: python -*-
a = Analysis(['Collector.py'],
             pathex=['C:\\\\Users\\\\vijay\\\\Python\\\\Collector'],
             hiddenimports=[],
             hookspath=None,
             runtime_hooks=None)
a.datas += [('logo.png','C:\\\\Users\\\\vijay\\\\System\\\\icon\\\\logo.png','DATA')]
pyz = PYZ(a.pure)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          name='Collector.exe',
          debug=False,
          strip=None,
          upx=True,
          console=False , icon='C:\\\\Users\\\\vijay\\\\System\\\\icon\\\\logo.ico')

在pyz变量上方的"a.datas += ...."行包含将在我的GUI应用程序的各个窗口中显示的png图像的路径。
设置在exe变量中的"icon=...."变量保存ico图像的路径,该图像将在Windows桌面上显示为"桌面"图标。

您现在可以在主程序中使用Max所做的操作(对我来说是Collector.py)。

这是我的脚本Collector.py的摘录,其中使用了马克斯的代码:

1
2
3
path = self.resource_path("logo.png")
icon = wx.Icon(path, wx.BITMAP_TYPE_PNG)
self.SetIcon(icon)

现在,当我运行pyinstaller Collector.spec时,我同时拥有一个Desktop Icon和一个Collector App窗口的Icon。

希望这会有所帮助!


要将图标添加到可执行文件,您需要使用以下内容:

1
python Makespec.py --icon=<FILE.ICO> yourprogram.py

或者,您可以将以下内容直接添加到规格文件中的exe = EXE(...)

1
icon=<FILE.ICO>

这会将file.ico添加到可执行文件的资源中(仅Windows),并显示为应用程序图标。您正在使用的a.datas追加将向内部资源添加一个图标,可以通过sys._meipass在应用程序内部进行访问。例如,您可以使用它在主窗口顶部添加图标。


此行应添加在a = Analysis(...)pyz = PYZ(a.pure)行之间。