背景:
我正在使用 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 Catalina
- 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'],
)