首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyInstaller图标选项在Mac上无效

PyInstaller图标选项在Mac上无效
EN

Stack Overflow用户
提问于 2020-06-18 13:58:53
回答 2查看 3.4K关注 0票数 5

我在mac上运行了以下命令,并创建了一个.app文件。

代码语言:javascript
复制
pyinstaller --icon icon.icns --noconsole -n testApp main.py

但是,生成的.app文件没有显示图标。

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

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

当我运行.app文件时,我会在码头上看到一个图标。

但是,图标并没有反映在.app文件本身中。为什么会这样呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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内容,如下所示:

代码语言:javascript
复制
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应用程序所支持的文件类型(如果有的话)。

票数 12
EN

Stack Overflow用户

发布于 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)。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62451711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档