python 打包项目(包含.ui文件,.dll文件)为exe可执行文件

目录

1. 背景

2. 生成.spec文件:

3. 编辑.spec文件:

4. 最后生成单个可执行文件.exe:

 5 补充:


1. 背景

        最近在项目中想做一个用于烧录MCU的上位机给工厂用。于是在某工程模板上简单开发了一个基于python 和pyQt5的上位机软件。项目包含多个.py文件,多个.dll文件,一个.ui文件,一个.ico文件。开发完成后,想要打包成一个单独的可执行文件(.exe)并使用项目中的.ico文件作为程序的图标,这样美观,且便于文件的分享,免除安装和依赖环境的麻烦。

这里提供一个在线生成.ico文件的网站:

.ico文件在线生成icon-default.png?t=N658https://www.moqu8.com/mqweb/imgtoico/index.php

2. 生成.spec文件:

        当前有以下一个项目,如图:

        项目中包含多个文件。其中的.py文件,两个.dll文件,一个.ico文件是我们执行时所需要的所有文件。

我们通过vscode 打开该项目文件夹,首先通过以下命令安装pyinstaller:

pip install pyinstaller

然后在terminal中输入以下命令,生成一个用于生成可执行文件的.spec文件(该方法适用于多文件的打包):

pyinstaller -F main.py

-F: 生成一个可执行文件。

main.py :项目的主界面。

此时可以看到,我们生成了一个名为 main.spec的文件。

3. 编辑.spec文件:

        我们打开.spec文件,进行如下编辑:

         3.1 在1位置,将所有需要打包的.py文件,以 'xxx.py' 的格式,添加到包含了 'main.py'的方括号中。

        3.2 将项目根目录的绝对路径,以 '' 包含后,添加到pathex中,注意要用 '\\'.

        3.3 将所有除了.py以外,需要用到各种格式的其他文件,比如 .dll, .ico . jpg等,以2元元组的格式,添加到datas中。元组格式为:('文件相对路径', '文件的父级相对路径')。文件的相对路径可通过以下方式快速获取:

         因为该项目中所有文件均在同一目录下,因此其父级相对路径变为 '.\\'。注意,这里也需要用 '\\'。

        3.4 修改name为你需要的命名。

        3.5 console有两种情况: True: 运行程序时打开命令窗口;False:不打开命令窗口。

        3.6 默认生成的.spec中可能不带icon,如果需要更改新程序图标的话,需要加上这行。因为当前图标和main.py在同一目录下,所以可直接用其相对路径。

4. 最后生成单个可执行文件.exe:

        在terminal中输入以下命令:

pyinstaller main.spec

        基于我们刚编辑过的.spec文件,我们最终在项目的根目录下生成两个文件夹: dist; build。我们需要的.exe文件就在dist文件夹下。

        图中可以看到,可执行文件的图标也变为了factory.ico。并且最后只生成了一个可执行文件。

运行一下:

 5 补充:

其实在最开始生成.spec文件时,可用下面的命令:

pyinstaller -F -w -i factory.ico main.py

下面是pyinstaller 的参数信息:

-h该模块的help信息
-F生成一个可执行文件
-D生成一个目录(包含多个文件)作为可执行文件
-w运行exe时,不显示命令行窗口(仅对Windows有效)
-i该参数后跟可执行文件的icon图标路径
–distpath该参数后跟可执行文件的路径
-n该参数后跟可执行文件的新名字

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

嘉禾天成

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

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

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

打赏作者

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

抵扣说明:

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

余额充值