IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Python打包exe瘦身方法 -> 正文阅读

[开发工具]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文件即可。

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-11-18 11:22:48  更:2021-11-18 11:23:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:23:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码