用PyInstaller打包PyQt程序

这篇博客介绍了如何使用PyInstaller将Python应用打包成exe文件,并进一步用winzip制作成自解压安装包。首先创建packup.py脚本,设置项目根目录和主入口文件main.py,然后指定依赖路径和资源文件,通过--add-data参数添加非依赖资源,最后设置图标。运行packup.py后,Python应用及其依赖会被打包成dll文件,形成可交付给客户的安装程序。
部署运行你感兴趣的模型镜像

在开发Python应用时需要交付客户,可以使用pyinstaller库来打包成exe文件,在用winzip等自解压格式包装成安装文件交付客户,这次记录一下步骤

  • 在工程根目录下新建一个打包脚本 packup.py
  • 在工程根目录下创建icon图标,mainIcon.ico

比如我的目录结构如下 

  • 打开packup.py
  • import  os
    from PyInstaller.__main__ import run
    if __name__ == '__main__':
        base=os.path.abspath(os.path.dirname(__file__))+"/frame"
        pp =base  + "/main.py"
        pp2=base+"/common"
        pp2_1=base+"/res"
        pp3=base+"/res/jackinfo.png;./"
        pp4=base+"/controls/testData.json;controls"
        pp5=base+"/config.cfg;../"
        # opts=[pp,'-F','-p={0}'.format(pp2),'--icon=mainIcon.ico']
        opts=[pp,'-p={0}'.format(pp2),
              '--add-data={0}'.format(pp3),
              '--add-data={0}'.format(pp4),
              '--add-data={0}'.format(pp5),
              '--add-data={0}'.format(pp2_1),
              '--icon=mainIcon.ico']
        run(opts)

    下面来解析每一段的含义

  • 首先是这个

    base=os.path.abspath(os.path.dirname(__file__))+"/frame"
       

    还记的第一张图我的工程目录结构吗?这个frame代表是需要打包到安装程序的根目录,也是软件的根目录

  • 接下来这个

pp =base  + "/main.py"

这个main.py是主入口,最后也会打包成main.exe并赋予图标

  • 然后是参数,第一个参数-p 表示项目中涉及依赖的文件或目录的路径,也就是项目需要import 加载到的文件,有时候import写法不能让python解析器关联到,就需要手动设置这一参数
pp2 = base + "/common"
  • 然后是项目需要用到但是不需要依赖的,比如一些图片,配置文件等资源文件,使用参数--add-data
    pp2_1=base+"/res"
    pp3=base+"/res/jackinfo.png;./"
    pp4=base+"/controls/testData.json;controls"
    pp5=base+"/config.cfg;../"

多个文件间可以用引号隔开,如/res/jackinfo.png;./

  • 最后一个是icon图标,用刚刚创建的图标文件
--icon=mainIcon.ico
  • 最后传这个opts对象给run函数跑一下
run(opts)

其他可选参数:

-F-onefile,打包成一个exe文件
-D-onefile,创建一个目录,包含exe文件,但会依赖很多文件(默认选项)
-c-console,-nowindowed,使用控制台,无窗口(默认)
-w-Windowed,-noconsole,使用窗口,无控制台

最后运行packup.py,看一下打包的效果:

可以看到最后的代码和依赖库都打包成了dll文件

完结,转载请注明文章出处

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

林晓lx

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

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

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

打赏作者

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

抵扣说明:

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

余额充值