Вы должны использовать команду для создания пакета приложений macOS
Если указано правильно, icon.icns
будет скопировано в папку Ресурсы и применено к пакету testApp.app
в каталог dist
после выполнения команды pyinstaller. (не пытайтесь использовать .ico, как было предложено, это для Windows).
Я просто попытался создать простое приложение Python с использованием PySide2, и оно без проблем включило файл значка в пакет приложений.
Учитывая, что icon.icns находится в том же каталоге как main.py
:
Ваша команда должна быть:
$ pyinstaller --onefile --windowed --icon icon.icns --name testApp main.py
Это создаст пакет приложений, и вы сможете его запустить нормально.
Но подождите, есть еще кое-что ...
К сожалению, история на этом не совсем заканчивается.
СПОЙЛЕР:
Чтобы делать вещи «правильным путем» и сделать macOS счастливой, вы также должны включить:
--osx-bundle-identifier 'YOUR_IDENTIFIER'
Таким образом, файл spe c будет включать информацию для создаваемого файла Info.plist
.
Также должен быть раздел в spe c файл, описывающий содержимое Info.plist
, что-то в строках:
app = BUNDLE(exe,
name='testApp.app',
icon='icon.icns',
bundle_identifier='com.youridentifier',
info_plist={
'NSPrincipalClass': 'NSApplication',
'NSAppleScriptEnabled': False,
'CFBundleDocumentTypes': [
{
'CFBundleTypeName': 'My File Format',
'CFBundleTypeIconFile': 'MyFileIcon.icns',
'LSItemContentTypes': ['com.example.myformat'],
'LSHandlerRank': 'Owner'
}
]
},
)
В приведенном выше примере ключ / значение 'NSPrincipalClass': 'NSApplication'
необходим, чтобы позволить Ma c OS X отображать приложение
Ключу 'NSAppleScriptEnabled'
присваивается логическое значение Python False, которое будет выводиться в Info.plist как <false/>
. Наконец, ключ CFBundleDocumentTypes
сообщает Ma c OS X, какие типы файлов поддерживает ваше приложение, если таковые имеются.