Python打包exe程序(pyinstaller)以及打包文件太大的解决方法
编写的python项目,如何在没有python环境的电脑中运行?
打包成exe可执行程序即可
本文章可以教会你如何将python项目打包成exe可执行程序,以及打包后文件太大该如何解决!
来了来了,开始操作
首先,你需要安装一个库
这个库叫啥呢,就叫“pyinstaller”,项目都能写出来,怎么安装库应该不需要我多说了吧?
pip install pyinstaller
想到可能会有新手,新手请看👆👆👆
老手请自觉跳过
安装好库了,那么打包命令是啥呢?
👇👇👇
pyinstaller -i 123.ico -F -w main.py
解释一下常用到的参数:
main.py :是你的python项目文件
-i :为main.exe文件指定的图标(如果没有,则不需要该参数)
123.ico :生成.exe文件的图标(推荐一个在线转换ico图标的网址)
-F :生成结果是一个exe文件,所有的第三方依赖、资源和代码均被打包进该exe内
-w :不显示命令行窗口(如不用此参数,打包后的程序在运行时会弹出一个命令行窗口,我个人一般是不喜欢它弹出这个命令行窗口的,除非打包后出现问题,后面会讲到)
来个表格:
参数名 | 描述 | 说明 |
---|---|---|
-i | 为main.exe指定图标 | pyinstaller -i 123.ico main.py |
-w | 不显示命令行窗口 | 编写GUI程序时使用此参数有用。 |
-c | 显示命令行窗口 | 与-w相反,默认含有此参数 |
-F | 生成one-file的程序 | 生成结果是一个exe文件,所有的第三方依赖、资源和代码均被打包进该exe内 |
-y | 如果dist文件夹内已经存在生成文件,则不询问用户,直接覆盖 | 默认:询问是否覆盖 |
-p | 指定额外的import路径,类似于使用PYTHONPATH | 参见PYTHONPATH |
上面表格中的参数中,前三个为Windows和Mac特有的参数,后三个为与生成结果有关的参数 and 通用参数
打包后,exe程序在当前目录下的dist文件夹中,自行去找哈
接下来说一说刚刚提到的命令行窗口,如果你使用了上面的命令打包后发现,程序打不开😕😕😕
别慌,看这👇
(文字有点点多,慢慢看,如果没有遇到这个问题可以先跳过这部分,以后遇到了再回来看)
首先你需要更改一下命令重新进行打包,怎么更改呢?前面我提到过一个命令行窗口,把打包命令中的-w删掉,再运行命令打包,打包好之后,就需要考验你的反应能力了,此话怎样呢,因为弹出来的命令行窗口只会停留一会儿。这时候,你可以准备截图(微信,qq,电脑自带等很多方式可以截图),在弹出命令行窗口运行出错误后进行截图。然后就是找问题所在了。
emmm,,,比如说这个👇
有句话ImportError:OpenCV loader:missing configuration file:['config.py']. Check OpenCV installation.啥意思呢,简单来说,缺少了相对应的库,这里是OpenCV库。
这时候需要在打包时指定 -p 参数,后面跟上 python 目录下的第三方库模板目录路径 site-packages ,再打包就成功了。
pyinstaller -i 123.ico -F -w main.py -p C:/python/lib/site-packages
解决后如果没有问题那就恭喜你,打包完成!
然而你会发现,有些项目在打包exe程序后的文件大小会非常大,比如说这个:
这种情况,请往下看
先看看效果怎样:
可以看到,打包前和打包后的大小差距有多大。
我用的方法:使用pipenv缩小exe
废话不多说,直接看操作步骤:
1、安装pipenv
与安装其他python库一样,在cmd环境下安装:
pip install pipenv
2、安装完成后,随便找一个盘符,在这个盘符的根目录(最好是根目录)新建一个文件夹,作为虚拟环境,然后双击进入该文件夹
3、在虚拟环境下安装python,例如:
pipenv install -python 3.6
在这里就有可能遇到第一个坑了,系统有可能提示无法转换为 “utf-8”,具体原因是因为中文转码的问题,但是不必深究。这时候最好的方法是重启电脑,对是的,重启电脑,然后不要打开任何其他程序,重复上述第2步
4、在命令行下激活虚拟环境
pipenv shell
在这里,可能又会遇到刚刚第3步中的问题,系统提示无法转换为“utf-8”,没有办法,再次重启电脑吧,然后重新进入power shell,再尝试运行 pipenv shell
5、安装需要的库(仅需安装需要打包的.py文件中所用到的库)
根据要打包的程序中导入的库,在pipenv环境下重新安装,例如:
pipenv install pyinstaller
pipenv install removebg
6、把py脚本文件复制到这个新建的目录下,重新运行 pyinstaller,方法、参数等同以往一样就OK
dddd(懂的都懂),好了,问题解决。
如果这篇文章对你有帮助,关注点赞收藏呗😉🤩
来源:蜡笔小新星