Python打包exe瘦身方法
1、创建虚拟环境
conda create -n colorcp(虚拟环境名) python==3.8(python版本号) #创建虚拟环境
conda activate colorcp #激活虚拟环境
创建新环境是因为不同项目需要的包的版本可能不一样,而且对于打包成exe,环境里的包太多会导致打包出来的文件很大
之后便需要在这个安装好的新环境里安装自己的程序里用到的包,此外,还需要安装pytinstaller
pip install pyinstaller
下载包的时候不要使用vpn,我使用vpn的时候,安装库就会报错
cd 到自己的程序.py所在的文件夹,如果在别的盘,需要先盘符加冒号再cd
(base) C:\Users\DELL>E:(base) E:\>cd E:\ColorComparer
2、打包
之后便可以对文件进行打包,打包有几种不同的方式,我试过 -F 和 -D。-D , -F是什么呢?这有一张表,这是从别的博主那里复制来的
(21条消息) Python打包成exe以及如何打包得足够小_hello,world-CSDN博客
使用-F会在dist文件夹生成一个.exe文件,可以直接执行;使用-D的方式打包,会在dist文件夹下生成一个文件夹,文件夹里包含.exe文件和各种依赖。先给大家看看我分别用这两种方法弄出来的文件大小吧。
用pyinstall -F 打包生成的文件:
用pyinstall -D 生成的文件:
比用-F更大呢,但是这是一个文件夹,可以删掉里面不需要的东西,来达到瘦身的效果,这是删除后的文件夹大小:
还是比用-F更大呢,但是这是一个文件夹,可以进行压缩,压缩后的文件大小:
比 -F打包的小了将近一半呢。而且用-F打包需要耗费的时间特别长,用-D打包就很快,接下来分别说说这两种打包方法。
3、pyinstaller -F 安装
用这种方法的安装,我参考的是一篇博客,博主写的很好呢,跟着做就打包出来了,上面那张图也是从这里得来的,链接如下:
(21条消息) Python打包成exe以及如何打包得足够小_hello,world-CSDN博客
主要就是创建虚拟环境、在虚拟环境里安装需要的库、打包,我打包的时候用到的命令如下:
pyinstaller -F -w -i leaf.ico main.py --paths="D:\ProgramData\Anaconda3\envs\colorcp\lib\site-packages\cv2"
# -F 是打包方式
# -w是不带控制台的打包
# -i 是使用图标
# 后面加的一串path是我的程序里用到了opencv,但是直接打包会报opencv的错,加了path就不报错了,内容是cv2的路径
# 一般不用后面的path
这个方法打包挺慢的,程序打开也挺慢的,但是直接成成一个.exe文件。
4、pyinstaller -F安装
这种安装方法我参考了这篇博客:
(21条消息) Pyinstaller彻底解决打包过大的问题_u012863565的博客-CSDN博客_解决pyqt5打包后太大
大体都差不多,只是在导库的时候我用了一种可能更简便的方法。
还是先创建虚拟环境,安装程序用到的库,然后开始打包,用到的打包代码如下:
pyinstaller -D -w -i leaf.ico main.py --paths="D:\ProgramData\Anaconda3\envs\colorcp\lib\site-packages\cv2"
# 其实就是把- F换成-D了而已
这种方法打包特别快。
之后便在dist文件夹里生成一个文件夹:
一开始只有框出来的文件夹,剩下的是我后来生成的。这时候的main文件特别大,接下来就是文件瘦身。先复制main文件夹,对就是那个副本,然后新建一个文件夹(我这里新建了一个,命名为color).
先把main里面的这三个文件复制到新建的文件夹里,这里是color文件夹:
剩下的.ui文件是我的程序里用到pyqt5,所以需要这么一个文件,也是复制进来的,.ico文件就是用到的图标文件。
python38.dll是解释器库,也是必不可少的。
那个压缩包是标准库,会自动解压到c盘的缓存目录里,你报错没有找到模块的话可以考虑直接把py文件丢到这个压缩包里面。
那个博主是这么说的,所以就先把这些文件复制到color文件夹里,那个博主这一步还有一个.py文件,但是我没搞,最后还是可以成功瘦身的。
打开main的副本文件夹,双击.exe文件。如果有项目用到.ui文件,需要把.ui文件也放到main文件夹里。程序运行的时候,全选main副本文件夹里的内容,然后删除。
遇到正在运行的问题,全部选跳过
之后把main副本文件夹里所剩余的内容全选,复制到color文件夹里,弹出的对话框里选择跳过,选覆盖也没事的吧哈哈,反正都一样
然后双击color文件夹里的.exe文件,会报错:
从main源文件夹中,找到tcl(每个程序需要的库不同,你用的时候提示的可能是别的文件,反正就在main原文件夹里找,然后复制到新建的文件夹里)文件夹,然后复制到color文件夹里:
然后再运行color文件夹里的.exe文件,可能还是报错,继续在生成的源文件夹里找,复制粘贴到新建的文件夹里。直到.exe文件可以正常运行
然后直接用压缩文件压缩color文件夹,就生成了一个很小的压缩包啦,我这里还比较大是因为程序中用到了opencv。要使用软件的时候,解压压缩包,双击里面的.exe文件即可。
Python打包exe瘦身方法相关推荐
- python打包exe 之打包sklearn模型中的各种坑及其解决方法。
之前学习了如何打包,如何建立虚拟环境打包,以及如何带资源打包exe. python打包成exe 可执行文件 .教程 使用pipenv建立虚拟环境解决python打包exe文件过大的问题(附打包带图标, ...
- Pyside2 学习系列三:PyInstaller打包项目瘦身(超详细的Pyside2 攻略)
继上一篇文章打包后,发现包太大了,我们现在开始进行瘦身优化. 本项目的所有演示代码:github可在这里下载. 打包只用的工具为PyInstaller. 不想细看的朋友 可以直接跳到 最后 方法对比 ...
- python打包exe之打包深度学习模型踩坑记录及其解决办法。
在现实生活中,有时候我们写的程序需要发给小伙伴用,而小伙伴没有python,这时候我们需要将程序打包成exe文件发给小伙伴用. 今天讲下打包深度学习模型 打包一般要用到cmd命令行,要求cmd能执行p ...
- 使用pipenv建立虚拟环境解决python打包exe文件过大的问题(附打包带图标,多个py文件打包exe)
我们编写的程序可以发给其他小伙伴使用,但是其他小伙伴不一定安装有python.这时候就需要用到打包啦.打包可以将程序打包成exe文件.然后小伙伴在windows平台里就可以运行(无需python).直 ...
- python打包exe报错编码问题,使用Python打包含有pymssql成exe所躺的坑
一.如何打包 Python打包exe文件简单运用pyinstaller库就行了 1)安装pyinstaller库(自行安装) 2)win+R打开运行窗口输入"powershell" ...
- SpringBoot-Maven打包压缩瘦身
SpringBoot-Maven打包压缩瘦身 一.Spring Boot 可执行 jar 分析 1.1 打包 1.2 两种 jar 的比较 1.3 一次打包两个 jar 二.SpringBoot迭代发 ...
- Python生成exe文件的方法
python生成exe文件的方法: 一.安装 pyinstaller pip install pyinstaller 二.使用 pyinstaller 命令 # 打包成exe,并设置图标 pyinst ...
- 浅试python打包exe文件 + ico图像制作
目录 1. python打包exe文件教程 2. ico图像制作 2.1 找ico 2.2 转ico 1. python打包exe文件教程 在B站上看了两个教程: Py文件打包成exe文件直接用 Py ...
- python制作exe可执行文件的方法---使用pyinstaller
python制作exe可执行文件的方法---使用pyinstaller python生成windows下exe格式的可执行程序有三种可选方案: py2exe是大家所熟知的,今天要介绍pyinstall ...
最新文章
- 线性代数可以速成吗_广播/学习吉他速成靠谱吗?真的可以速成吗?
- python上传excel文件_flask上传excel文件,无须存储,直接读取内容
- Qt 控件渐变隐藏消失
- 使用未初始化的内存是什么意思_单根内存条的极限容量是多少?内存条上的2R X 8代表了什么意思?...
- C#循环给多个控件赋值
- 【数字信号处理】基于DFT的滤波系列1
- Android软件安全与逆向分析之Dalvik
- 批处理详细教程(五)
- 根据父类id查询所有的父级_031、组函数和子查询
- linux中 /dev/null命令
- VC++ CString互转double
- jQuery.Autocomplete 自动完成
- Flash知识点总结
- 读过的设计模式的书小结
- Unity3D入门(二):碰撞检測
- 使用共享内存作为进程互斥锁的代码
- matlab信号处理小波变换
- TCP RTT测量妙计
- 买土豆的故事(转中外管理)
- Android 12.0 修改系统默认字体的大小
热门文章
- 打印机共享用计算机,如何将打印机共享
- kali安装keylogger_小白日记48:kali渗透测试之Web渗透-XSS(二)-漏洞利用-键盘记录器,xsser...
- MBA联考-20101215
- 【HDL系列】半加器、全加器和行波进位加法器原理与设计
- ‘node‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
- 使用Mbrfix卸载Ubuntu系统
- IT专业报考指南:选择正确的学校和课程
- C# 中获取时间戳的方法
- ping 工具的使用
- JB的测试之旅-关于线上问题的看法