在Pyinstaller中将图像添加到.spec文件

时间:2012-03-30 16:19:31

标签: python icons temp pyinstaller

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

我在.spec文件的末尾添加了这一行:

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

3 个答案:

答案 0 :(得分:11)

这是我用于名为Collector.spec的简单python程序的spec文件("Collector.py")。

# -*- 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 += .... "保存了png图像的路径,该路径将显示在我的GUI应用程序的各个窗口上。 在exe变量中设置的"icon=...."变量保存了ico图像的路径,该路径将作为桌面图标显示在Windows桌面上。

现在,您可以使用Max在主程序here中执行的操作Max,对我而言。

以下是我的脚本Collector.py的片段,我已使用{{3}}代码:

Collector.py

现在,当我运行path = self.resource_path("logo.png") icon = wx.Icon(path, wx.BITMAP_TYPE_PNG) self.SetIcon(icon) 时,我同时拥有桌面图标和我的收藏家应用程序窗口的图标。

希望这有帮助!

答案 1 :(得分:3)

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

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

或者,您可以将以下内容直接添加到规范文件

中的exe = EXE(...)
icon=<FILE.ICO>

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

答案 2 :(得分:0)

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