如何使用具有PySide2 GUI的Python脚本构建Mac OS应用程序?

Serge Ballesta

内容:

我正在使用PySide2 GUI开发一个简单的Python应用程序。目前,它可以在Windows,Linux和Mac上正常运行。在Windows上,我可以使用PyInstaller和InnoSetup构建一个简单的安装程序。然后,我尝试在Mac上执行相同的操作。它很快就崩溃了,因为系统拒绝启动命令或由PyInstaller生成的应用程序,因为它没有正确签名。而且由于我不是苹果开发人员,所以我什么都不能签名...

经过研究,我尝试了py2app。我可以在这里更进一步。

python setup.py py2app -A

我可以创建一个可运行的应用程序。由于使用我的开发文件夹,因此显然不能移植到其他系统。如果我使用python setup.py py2app生成的程序,则无法启动,因为py2app没有复制所有必需的Qt内容。我试图一个接一个地添加缺少的库,但是最后系统找不到插件,所以我放弃了...

题:

有人可以帮我一个用Qt GUI将python脚本或程序包转换为Mac上便携式应用程序的食谱吗?理想情况下,配方应说明如何使用自定义应用程序图标,但这不是必需的。

参考文献:

  • 的Python 3.8.5
  • macOS 10.15.7卡塔利娜
  • PySide2 5.15.1
  • PyInstaller 4.0
  • py2app 0.22

由于我的实际包装太大,无法解决SO问题,因此将其缩减为一个最小的可重现示例:

from PySide3.QtWidgets import *
import sys


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        hello = QLabel('Hello', self)
        hello.move(50, 50)

def run(args):
    app = QApplication(args)
    main = MainWindow()
    main.show()
    sys.exit(app.exec_())


if __name__ == '__main__':
    run(sys.argv)

这是用于py2app的setup.py文件:

from setuptools import setup

APP = ['app.py']
DATA_FILES = []
OPTIONS = {}

setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)
斯蒂芬·巴德

要求

  • 适用于Python 3.8.5
  • macOS 10.15.7卡塔利娜
  • 使用PySide2和py2app

问题

  • PySide2 必须在OPTIONS下添加到软件包列表中
  • 在运行应用程序时,仍然会发生错误: Library not loaded: @rpath/libshiboken2.abi3.5.15.dylib, Reason: image not found

稍作修改的setup.py可能看起来像这样:

from setuptools import setup

APP = ['app.py']
DATA_FILES = []
OPTIONS = {
    'packages': ['PySide2'],
    'iconfile': 'some_icon.icns',
    'plist': {
        'CFBundleDevelopmentRegion': 'English',
        'CFBundleIdentifier': "com.ballesta.xxx",
        'CFBundleVersion': "1.0.0",
        'NSHumanReadableCopyright': u"Copyright © 2020, Serge Ballesta, All Rights Reserved"
    }
}

setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)

此外,还添加了图标定义和一些用于一些基本信息的plist条目。

最好使用如下所示的脚本来触发整个构建:

#!/bin/sh
python3 -m venv venv
. venv/bin/activate
pip install PySide2
pip install py2app
python setup.py py2app      
cp ./venv/lib/python3.8/site-packages/shiboken2/libshiboken2.abi3.5.15.dylib ./dist/app.app/Contents/Resources/lib/python3.8/lib-dynload/shiboken2

测试

这里是测试运行的屏幕截图:

屏幕截图

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python-如何在Mac OS X上的GUI应用程序中创建守护程序?

构建一个Mac OS X Cocoa应用程序以运行带有参数的Shell脚本

如何在Mac OS应用程序中使用canOpenURL?

Mac OS X Timing应用程序如何跟踪文件

Mac OS X 使用鼠标滚轮放大应用程序

在Mac OS应用程序中使用控件

在Mac OS Visual Studio上的Xamarin表单应用程序中,如何设置iOS构建级别?

无法使用cx_Freeze在Mac OS X Yosemite(10.10)上构建独立应用程序

获取要在脚本中使用的Mac OS应用程序的名称

如何从命令行构建Xamarin.Mac应用程序或构建脚本

OS X运行带有GUI的系统应用程序,超过包括全屏应用程序的所有其他应用程序

如何在 Python 中跨应用程序使用具有一个基本配置的记录器

在Pyside2 for Python上显示应用程序后,我们如何刷新事件?

在 chrome OS (chromebook) 中使用谷歌应用程序脚本对谷歌表有任何限制吗?

在Windows和Mac OS中都使用Python中的默认OS应用程序打开文档

如何在Mac OS中使用命令行参数运行应用程序

如何获取在您的应用程序中使用的标准Mac OS X图标?

如何部署pyside2应用程序?-Qt方式

Mac .app程序包向后兼容错误:“此版本的OS X无法使用此版本的应用程序“ [我的应用程序名称]”。”

CMAKE 使用 MinGW 构建 gui 应用程序

使用从OS X应用程序中的源代码构建的OpenSSL库

有没有办法防止 Mac OS X 中的应用程序窃取焦点?

有没有办法为Swing应用程序禁用Mac OS Retina Scaling?

从Internet下载的Mac OS X应用程序卡有“带对角线的圆圈”图标

是否有Mac OS X的终端应用程序可以使URL可点击?

以编程方式获取有关Mac OS X应用程序的信息

没有NSApplication实例的Mac OS X应用程序可以吗?

py2app pyqt缺少库,应用程序无法在Mac OS X上启动

如何分发用于Mac OS的应用程序,以便它可以通过双击它运行?