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拷到其他电脑上运行啦!