我正在使用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上便携式应用程序的食谱吗?理想情况下,配方应说明如何使用自定义应用程序图标,但这不是必需的。
由于我的实际包装太大,无法解决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'],
)
要求
问题
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] 删除。
我来说两句