PyQt5 用pyinstaller 打包成桌面GUI

PyQt5用pyinstaller打包成桌面GUI

        环境:OS 10.13,python3.7,PyQt5

之前使用的是py2app,一个是打包之后文件太大,有230M,另外在运行时会出现这种错误:

LSOpenURLsWithRole() failed for the application /Volumes/Disk1/编程练习/GUI测试/dist/NameDesign.app with error -10810.

应该是xcode的签名问题。暂时未解决。

关键语句:生成配置文件

import os
import os.path
def code2exe(pyfile):
    cmd = '/LiManing/Library/Python/3.7/bin/py2applet --make-setup {pyfile}'.format(pyfile=pyfile)
    os.system(cmd)
if __name__ == "__main__":
    code2exe('QtTest.py')

执行后,会生成setup.py,即配置文件:

from setuptools import setup
APP = ['QtTest.py']
APP_NAME = 'test'
DATA_FILES = []
OPTIONS = {
    'argv_emulation' : True,
    'iconfile':'icon.icns',     #应用图标
}

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

再进行打包,之前的cmd部分,替换成:

cmd = 'python3 setup.py py2app'        #python3.7 setup.py py2app -A 加了-A表示利用本机库,不打包依赖库

实际测试中,加了-A能够正常运行,而且包超级小,只有23k,写自用工具还是不错的。

 

如果其他机器也用,推荐pyinstaller,打包简单,体积小,运行正常。

因为环境是python3.7,所以在终端 pip3 install pyinstaller。注意pyinstaller用全路径,之后在python中调用终端:

import os
import os.path
def code2exe():
    cmd1 = '/LiManing/Library/Python/3.7/bin/pyinstaller --windowed --onefile --icon=icon.icns --clean --noconfirm QtTest.py' #生成配置文件
    cmd2 = '/LiManing/Library/Python/3.7/bin/pyinstaller --clean --noconfirm --windowed --onefile QtTest.spec'
#对配置文件进行打包
    os.system(cmd1)
    os.system(cmd2)

if __name__ == "__main__":
    code2exe()

生成的配置文件如下:

# -*- mode: python -*-
block_cipher = None
a = Analysis(['QtTest.py'],
             pathex=['/Volumes/Disk1/编程练习/GUI测试'],
             binaries=[],
             datas=[],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          name='QtTest',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          runtime_tmpdir=None,
          console=False , icon='icon.icns')
app = BUNDLE(exe,
             name='QtTest.app',
             icon='icon.icns',
             bundle_identifier=None)

生成的dist包中,执行app:

之后可以用磁盘工具--文件--新建映像--来自文件夹的映像,将dist文件夹打包为dmg格式。

双击dmg,即可运行:

 

参考资料:https://blog.csdn.net/hhhhhhxh/article/details/79811004

https://blog.csdn.net/panna_linda/article/details/78644345

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

limaning

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值