How to specify py2app icon?
Asked Answered
C

3

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'],
)
Charterhouse answered 9/4, 2011 at 21:34 Comment(0)
B
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'],
)
Beadledom answered 10/4, 2011 at 4:54 Comment(1)
Thank you. Full documentation here: py2app.readthedocs.io/en/latest/options.htmlFixer
R
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.

Rheotropism answered 11/4, 2011 at 18:35 Comment(1)
make sure the icon you are using is compatible - editing the extension of the file will not achieve this. Download a convertor such as macupdate.com/app/mac/18369/img2icnsRheotropism
C
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.

Conscionable answered 5/6, 2021 at 15:0 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.