Grahame Thomson
Grahame Thomson

Reputation: 211

How to specify py2app icon?

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'],
)

Upvotes: 12

Views: 14214

Answers (3)

engineeringchap
engineeringchap

Reputation: 11

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.

Upvotes: 1

Sheldon
Sheldon

Reputation: 10087

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.

Upvotes: 9

user326503
user326503

Reputation:

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'],
)

Upvotes: 26

Related Questions