目录
1. 背景
2. 生成.spec文件:
3. 编辑.spec文件:
4. 最后生成单个可执行文件.exe:
5 补充:
1. 背景
最近在项目中想做一个用于烧录MCU的上位机给工厂用。于是在某工程模板上简单开发了一个基于python 和pyQt5的上位机软件。项目包含多个.py文件,多个.dll文件,一个.ui文件,一个.ico文件。开发完成后,想要打包成一个单独的可执行文件(.exe)并使用项目中的.ico文件作为程序的图标,这样美观,且便于文件的分享,免除安装和依赖环境的麻烦。
这里提供一个在线生成.ico文件的网站:
.ico文件在线生成https://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 的参数信息:文章来源:https://www.toymoban.com/news/detail-561191.html
-h | 该模块的help信息 |
---|---|
-F | 生成一个可执行文件 |
-D | 生成一个目录(包含多个文件)作为可执行文件 |
-w | 运行exe时,不显示命令行窗口(仅对Windows有效) |
-i | 该参数后跟可执行文件的icon图标路径 |
–distpath | 该参数后跟可执行文件的路径 |
-n | 该参数后跟可执行文件的新名字 |
文章来源地址https://www.toymoban.com/news/detail-561191.html
到了这里,关于python 打包项目(包含.ui文件,.dll文件)为exe可执行文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!