python多文件打包成exe简单过程(利用pyinstaller)

想把一个项目打包成在不同电脑上可运行的程序。目标项目很复杂,涉及到多个.py文件和多个资源及依赖环境。

所以先拿简单的小项目来试一下,需要打包的文件目录如下:

只有两个.py文件和一个img文件夹。

一、安装pyinstaller

pip install pyinstaller

其他安装方法可以上网搜,如果pip下载速度太慢导致安装失败的话,可以换一换pip镜像。

常用的镜像地址如下:

清华: 阿里云: 中国科技大学 华中理工大学: 山东理工大学: 豆瓣:

这时,可使用下面的语句(清华):

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller

二、开始打包

1. 将项目放在一个(反正自己能找到)不包含中文的路径下,这里方便省事我直接放在了E盘下:

2. 打开cmd,进入项目文件夹内,这里我自己的文件夹路径是 E:inpaint>

多文件打包命令格式如下,为一条命令,为方便显示做分行处理:

pyinstaller [主文件] -p [其他文件1] -p [其他文件2]
--hidden-import [库包名1]
--hidden-import [库包名2]
# 以上为一整条命令

在这里的话,pyinstaller -F [主文件]... 是只生成一个exe文件。

不加-F的话,生成一个文件夹,如下图。

我自己的项目输入是:

pyinstaller Frame.py -p AutoTest.py --hidden-import sys --hidden-import PyQt5 --hidden-import cv2 --hidden-import numpy

打开项目所在的文件夹,这时发现生成了一个dist文件夹和一个.spec文件

进入dist文件夹,里面有一个Frame(我自己的项目是这个名字哈)

点击Frame.exe运行。

哦嚯,闪退了。。。闪退过程中仿佛有几行报错飘过。但它退太快,看不清。

三、解决exe运行闪退

用 EV录屏 软件录了闪退的视频,定格到报错的那一帧看,发现了

No module named pkg_resources.py2_warn

查了资料后,是由于新版本的setuptools引起的,只需将setuptools降级到44.0.0及以下,再重新打包就可以了。

cmd中输入:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple setuptools==44.0.0

重新打包,见步骤二。

这下子没问题辽!Frame.exe可以运行!

不过运行时一直有个小黑窗。

好吧,删了重来,

将打包的语句加入-w(取消窗口),如下在pyinstall后添加-w

pyinstaller -w Frame.py -p AutoTest.py --hidden-import sys --hidden-import PyQt5 --hidden-import cv2 --hidden-import numpy

四、成功!

运行新打包的Frame.exe,

成功!

然后,可以直接把dist下的文件夹Frame拷到其他电脑上运行啦!

经验分享 程序员 微信小程序 职场和发展