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瘦身方法相关推荐

  1. python打包exe 之打包sklearn模型中的各种坑及其解决方法。

    之前学习了如何打包,如何建立虚拟环境打包,以及如何带资源打包exe. python打包成exe 可执行文件 .教程 使用pipenv建立虚拟环境解决python打包exe文件过大的问题(附打包带图标, ...

  2. Pyside2 学习系列三:PyInstaller打包项目瘦身(超详细的Pyside2 攻略)

    继上一篇文章打包后,发现包太大了,我们现在开始进行瘦身优化. 本项目的所有演示代码:github可在这里下载. 打包只用的工具为PyInstaller. 不想细看的朋友 可以直接跳到 最后 方法对比 ...

  3. python打包exe之打包深度学习模型踩坑记录及其解决办法。

    在现实生活中,有时候我们写的程序需要发给小伙伴用,而小伙伴没有python,这时候我们需要将程序打包成exe文件发给小伙伴用. 今天讲下打包深度学习模型 打包一般要用到cmd命令行,要求cmd能执行p ...

  4. 使用pipenv建立虚拟环境解决python打包exe文件过大的问题(附打包带图标,多个py文件打包exe)

    我们编写的程序可以发给其他小伙伴使用,但是其他小伙伴不一定安装有python.这时候就需要用到打包啦.打包可以将程序打包成exe文件.然后小伙伴在windows平台里就可以运行(无需python).直 ...

  5. python打包exe报错编码问题,使用Python打包含有pymssql成exe所躺的坑

    一.如何打包 Python打包exe文件简单运用pyinstaller库就行了 1)安装pyinstaller库(自行安装) 2)win+R打开运行窗口输入"powershell" ...

  6. SpringBoot-Maven打包压缩瘦身

    SpringBoot-Maven打包压缩瘦身 一.Spring Boot 可执行 jar 分析 1.1 打包 1.2 两种 jar 的比较 1.3 一次打包两个 jar 二.SpringBoot迭代发 ...

  7. Python生成exe文件的方法

    python生成exe文件的方法: 一.安装 pyinstaller pip install pyinstaller 二.使用 pyinstaller 命令 # 打包成exe,并设置图标 pyinst ...

  8. 浅试python打包exe文件 + ico图像制作

    目录 1. python打包exe文件教程 2. ico图像制作 2.1 找ico 2.2 转ico 1. python打包exe文件教程 在B站上看了两个教程: Py文件打包成exe文件直接用 Py ...

  9. python制作exe可执行文件的方法---使用pyinstaller

    python制作exe可执行文件的方法---使用pyinstaller python生成windows下exe格式的可执行程序有三种可选方案: py2exe是大家所熟知的,今天要介绍pyinstall ...

最新文章

  1. 线性代数可以速成吗_广播/学习吉他速成靠谱吗?真的可以速成吗?
  2. python上传excel文件_flask上传excel文件,无须存储,直接读取内容
  3. Qt 控件渐变隐藏消失
  4. 使用未初始化的内存是什么意思_单根内存条的极限容量是多少?内存条上的2R X 8代表了什么意思?...
  5. C#循环给多个控件赋值
  6. 【数字信号处理】基于DFT的滤波系列1
  7. Android软件安全与逆向分析之Dalvik
  8. 批处理详细教程(五)
  9. 根据父类id查询所有的父级_031、组函数和子查询
  10. linux中 /dev/null命令
  11. VC++ CString互转double
  12. jQuery.Autocomplete 自动完成
  13. Flash知识点总结
  14. 读过的设计模式的书小结
  15. Unity3D入门(二):碰撞检測
  16. 使用共享内存作为进程互斥锁的代码
  17. matlab信号处理小波变换
  18. TCP RTT测量妙计
  19. 买土豆的故事(转中外管理)
  20. Android 12.0 修改系统默认字体的大小

热门文章

  1. 打印机共享用计算机,如何将打印机共享
  2. kali安装keylogger_小白日记48:kali渗透测试之Web渗透-XSS(二)-漏洞利用-键盘记录器,xsser...
  3. MBA联考-20101215
  4. 【HDL系列】半加器、全加器和行波进位加法器原理与设计
  5. ‘node‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  6. 使用Mbrfix卸载Ubuntu系统
  7. IT专业报考指南:选择正确的学校和课程
  8. C# 中获取时间戳的方法
  9. ping 工具的使用
  10. JB的测试之旅-关于线上问题的看法