12

How do I specify the icon file when using py2app?

Just now I create the setup file:

py2applet --make-setup MyApplication.py

and then build the application bundle:

 python setup.py py2app -A

where is it that I specify the icon file.. getting a little confused. Thanks for any help.

according to this link- http://packages.python.org/py2app/options.html, I should add it as an option.

Currently my setup.py file looks like this:

"""
This is a setup.py script generated by py2applet

Usage:
    python setup.py py2app
"""

from setuptools import setup

APP = ['hello.py']
DATA_FILES = ['chalkboard.jpg']
OPTIONS = {'argv_emulation': True,
'iconfile': '/Users/grahamethomson/Documents/College/HND/oop/game/personal       developoment/G/icon.icns'}

setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)
Grahame Thomson
  • 201
  • 2
  • 3
  • 6

3 Answers3

26

In your setup.py, add iconfile

"""
This is a setup.py script generated by py2applet

Usage:
    python setup.py py2app
"""

from setuptools import setup

APP = ['main.py']
DATA_FILES = []
OPTIONS = {
    'iconfile':'icon.icns',
    'plist': {'CFBundleShortVersionString':'0.1.0',}
}

setup(
    app=APP,
    name='MacApp',
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)
9

Answering my own question.

To add an icon file simply add the iconfile option when creating setup.py:

py2applet --make-setup foo.py --iconfile images/icon.icns

Note: You must not leave the icon.icns under the same folder as your main script foo.py. It must be placed under a subfolder like images/, otherwise you'd end up with DATA_FILE=['--iconfile'] in your setup.py, which would fail because that's not a data file.

kakyo
  • 10,460
  • 14
  • 76
  • 140
Sheldon
  • 9,639
  • 20
  • 59
  • 96
  • 2
    make sure the icon you are using is compatible - editing the extension of the file will not achieve this. Download a convertor such as http://www.macupdate.com/app/mac/18369/img2icns – Sheldon Apr 11 '11 at 19:00
1

These solutions didn't work for me on python3. The --iconfile switch was throwing errors about not finding the file. In fact the switch is not even needed. This worked for me.

py2applet --make-setup MyApplication.py myicon.icns
python3 setup.py py2app

Just put the icon in the same folder as the source code and this does what you want. Found in py2applet help.