Add image to .spec file in Pyinstaller

maupertius picture maupertius · Mar 30, 2012 · Viewed 23k times · Source

Does anybody know how to modify the .spec file created with the Makespec.py of Pyinstaller such that it includes an image data in the _MEIPASS2 Temp dir? I want to be able to add an icon to my exe. I've done what's written here, but I just don't know how to add my data in the .spec.

I'm adding this line in the end of the .spec file:

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

Answer

yvvijay picture yvvijay · Jun 6, 2014

Here is my spec file (Collector.spec) I used for a simple python program called "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')

The line "a.datas += .... " just above pyz variable holds the path to png image that will be displayed on various windows of my GUI application. The "icon=...." variable set inside exe variable, holds the path to ico image that will be displayed on Windows Desktop as the Desktop Icon.

You can now use what Max has done here in your main program (Collector.py, for me).

Here is a snippet of my script Collector.py, where I've made use of Max's Code:

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

Now, when I run pyinstaller Collector.spec, I have both a Desktop Icon and an Icon for my Collector App windows.

Hope this helps!