我在mac上运行了以下命令,并创建了一个.app文件。
pyinstaller --icon icon.icns --noconsole -n testApp main.py但是,生成的.app文件没有显示图标。

icon.icns在info.plist中指定为图标文件。

Content/Resouces文件夹包含icon.icns。

当我运行.app文件时,我会在码头上看到一个图标。
但是,图标并没有反映在.app文件本身中。为什么会这样呢?
发布于 2020-06-27 07:26:42
您应该使用命令来创建macOS应用程序包
如果指定正确,那么在运行pyinstaller命令之后,icon.icns将被复制到Resources文件夹中,并应用到dist目录中的testApp.app包中。(不要像建议的那样尝试.ico,这是针对Windows的)。
我刚刚尝试使用PySide2创建一个简单的Python,它在应用程序包中包含了图标文件,没有任何问题。
假定 icon.icns位于与main.py相同的目录中
你的命令应该是:
$ pyinstaller --onefile --windowed --icon icon.icns --name testApp main.py
这将产生应用程序包,您应该能够运行它很好。
但是等等还有更多的..。
不幸的是,故事并没有就此结束。
扰流板:
为了以“正确的方式”做事情并使macOS高兴,您还应该包括:
--osx-bundle-identifier 'YOUR_IDENTIFIER'
这样,规范文件将包含生成的Info.plist文件的信息。
此外,规范文件中还应该有一个部分描述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'是允许Mac使用视网膜分辨率呈现应用程序所必需的。
键'NSAppleScriptEnabled'被分配为Python,它将作为<false/>输出到Info.plist。最后,键CFBundleDocumentTypes告诉Mac应用程序所支持的文件类型(如果有的话)。
发布于 2021-04-28 03:15:22
临时解决方法是简单地在查找器中的.icns文件上获取信息;单击并在Get信息窗口的左上角复制图像;然后将该.icns图像粘贴到应用程序的Get信息窗口的相同位置。您还可以通过该方法将.icns映像从任何现有应用程序复制到任何其他应用程序。我相信这个功能已经在Mac上提供了二十多年了。尽管如此,最终还是应该将其编码到Info.plist内容中。编辑: Get信息中的.icns图像不能显示默认图像。如果是,那么在预览中打开.icns图像,复制图像并粘贴到您想要的任何Get信息图像中。它适用于我的iMac和复制到另外两个Mac (Mini 2012运行Mojave 10.14.6和Mini运行10.11.6)。
https://stackoverflow.com/questions/62451711
复制相似问题