python没有菜单栏怎么搞mac_在我的Python Qt应用程序中将Mac OSX应用程序菜单栏项设置为“Python”以外的其他项...

如果您打算分发应用程序,那么python二进制文件的符号链接就不能保证工作,因为通常在开发机器上,系统python不是默认的python,普通用户很可能不会安装Qt和PyQt。

一个更可靠的方法是使用一个本地OSX引导二进制文件来启动PyQt应用程序。py2app和PyInstaller都可以生成本机包装器。虽然py2app对于创建一个别名为的应用程序很有效,即一个包装器,它可以符号链接到系统上的现有文件,使它只绑定所需的PyQt依赖项,但事实证明这并不简单。此外,如果将py2app生成的带有--aliased标志的“别名应用”移动到另一个文件夹,则它将停止工作,因为符号链接是相对于最初运行生成脚本的文件夹的。

PyInstaller安装程序

PyInstaller开箱即用,最后我得到了一个OSX包,其中包含了16MB左右的依赖项。

将python脚本绑定到独立的OSX应用程序:pyinstaller -w --noconfirm -i=myappicon.icns --clean -F myscript.py

这将生成一个独立的捆绑包,在OSX标题栏中以应用程序名的形式显示.setWindowTitle()中的所有内容。-w开关非常重要,因为它将使用正确的.plist文件创建一个MacOS应用程序包。

注意:由于某些原因,通过pip安装的pyinstaller版本对我不起作用。所以我删除了最初的pip版本(pip uninstall pyinstaller),并安装了最新的^{} branch from github,其中:pip install -v -e git+https://github.com/pyinstaller/pyinstaller.git@develop#egg=pyinstaller-github

在那之后,它就像一个符咒。

Mac自动机

创建应用程序包装的另一个选项是使用Automator(在Spotlight中键入名称),转到File>New>Application>搜索并将Run shell script拖到编辑器中,然后在shell下选择bash,python。您还可以使用运行apple script并使用apple脚本引导您的应用程序-如果您需要(例如)询问用户的密码以便以提升的权限运行,这将非常有用。

Automator的一个更好的替代品是Platypus-一个免费的开源应用程序,它将各种类型的脚本打包到OSX应用程序中,并且还提供一些额外的功能,如gui文本输出窗口、以管理员权限运行、设置自定义图标等。这些代码在github上可用。

还可以选择在Xcode中创建一个barebones OSX应用程序,它将启动PyQt脚本(例如here),并执行应用程序所需的其他自定义任务。NOTE: Keep in mind that an app bundle that calls your python code with a predefined interpreter is a 'shallow' app bundle, and will depend on whatever python dependencies you have install locally. Most likely will not work OOTB on someone else's Mac.

努伊特卡

您可能还想尝试Nuitka(^ {CD11>}),它旨在通过将Python代码转换为C++并编译它来构建真正的本地可执行文件。

使用nuitka构建本机应用程序的示例:nuitka3 --follow-imports --python-flag=no_site --verbose --standalone --show-progress --show-modules --output-dir=my_build_dir myscript.py

这将使用my_build_dir文件夹中的库创建mac可执行文件。您需要自己将它们包装在MacOS应用程序包中,例如使用Platypus或Automator。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值