pyinstaller瘦身指南

news2024/11/17 3:33:24

目录

  • 说明
  • 无优化直接打包
  • 优化:创建专用虚拟环境
  • 原因分析和总结

说明

之前写了一个自动化办公的python脚本,按需求打包exe。经过不断优化打包过程,把26.1MB的文件变成了9.5MB的文件。
打包工具pyinstaller
安装:

pip install pyinstaller

我的项目结构:
项目结构

无优化直接打包

这里用conda的base环境打包,命令(特别注意,pyinstaller对3.8有BUG,这里使用python3.7):

pyinstaller -F -w IDNumberMatching.py

运行效果结果图
可以看到,用这种方法打包程序有27.1M,当base中安装的库越来越多时,文件大小也会越来越大(多的时候可以打出1-2G的文件,难以发布)

优化:创建专用虚拟环境

常用的创建虚拟环境的工具有condapipenvvirtualenv等。这里推荐使用conda
下载地址:https://www.anaconda.com/
conda创建虚拟环境的命令如下:

conda create -n test01 python==3.7

然后按提示创建,接着激活(之后的优化,如无特殊说明,都是默认在激活虚拟环境的情况下):

conda activate test01

效果图
接着安装所需的库,例如我安装xlrdxlwtPySimpleGUI(根据需要这一步请自行安装):
安装后
然后安装pyinstaller

pip install pyinstaller


接着再次打包:

pyinstaller -F -w IDNumberMatching.py


这一次的效果:

从27.1M降到了9.5M。

原因分析和总结

pyinstaller的打包原理是将解释器和所有第三方库打包到exe中。所以减少第三方库,使用专用虚拟环境,可以有效减少exe的大小。一般来说,这种方法可以瘦身2-10倍。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/55547.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu1804里进行KITTI数据集可视化操作

需要做的准备工作 1、需要提前安装kitti2bag(终端输入即可安装) pip install kitti2bag 如果没有pip,按照Ubuntu给的提示先安装pip 2、下载kitti数据集(下载圈出的两部分) kitti数据集的百度网盘链接 kitti数据集链接_FYY2LHH的博客-CSDN博客 文件存放位置如图 上图…

Android Material Design之Chip, ChipGroup(十二)

效果图 资源引入 implementation com.google.android.material:material:1.4.0属性 Chip 属性描述android:id控件idstyle样式属性系统默认4种 1.style/Widget.MaterialComponents.Chip.Entry 2.style/Widget.MaterialComponents.Chip.Choice3.style/Widget.MaterialCompon…

集团资金管理BI分析的三个关键节点

集团资金管理方面的商业智能BI分析怎么做?从财务角度来说,企业的管理是以财务管理为中心,财务管理以资金管理为中心,资金管理以现金流量为中心。围绕资金管理至少需要考虑三个方面的内容:安全、收益和效率。 在商业智…

【JavaEE】JavaScript(WebAPI)

努力经营当下,直至未来明朗! 文章目录前言一、前置知识二、【DOM】【获取元素】【事件】【操作元素】1.【获取/修改元素的内容】2.【获取/修改元素属性】3.【获取/修改 表单元素属性】4.【获取/修改样式属性】【操作节点】1.【新增节点】2.【删除节点】&…

【2-3个月左右录用】物联网、无线通信类、人工智能、传感器、人机交互等领域必投快刊,进展顺利,12月截稿

【期刊简介】3.0-4.0,JCR2/3区,中科院4区 【检索情况】SCI在检,正刊 【征稿领域】安全和隐私雾云辅助物联网网络 【参考周期】2-3个月左右 【截稿日期】2022年12月31日 【期刊简介】2.0-3.0,JCR3区,中科院4区 【检索情…

【白嫖】如何低价续费服务器

背景 现在各大云服务商的学生价服务器都已经关闭了,华为云、阿里云、百度云,以前都有学生价服务器,一年只要99。现在我找半天都没找到入口,而原价的一年得500起步。。。 但是!!!腾讯虽然也取消了…

【系统性学习】Linux Shell易忘重点整理

本文主要基于《实用Linux Shell编程》总结,并加入一些网上查询资料和博主自己的推断。 其中命令相关的,已抽取出来在另一篇系统性学习】Linux Shell常用命令中,可以一起使用。 文章目录一、基础知识二、命令与环境三、变量和数组四、条件流程…

Linux多线程C++版(八) 线程同步方式-----条件变量

目录1.条件变量基本概念2.条件变量创建和销毁3.条件变量等待操作4.条件变量通知(唤醒)操作5.代码了解线程同步6.线程的状态转换7.代码改进--从一对一到一对多1.条件变量基本概念 互斥锁的缺点是它只有两种状态:锁定和非锁定条件变量通过允许线程阻塞和等待另一个线…

Kamiya丨Kamiya艾美捷抗FLAG多克隆说明书

Kamiya艾美捷抗FLAG多克隆化学性质: 程序:用FLAG肽免疫家兔与KLH偶联。多次免疫后在弗氏佐剂中收集血清使用固定在固相上的肽。 规范: 使用氨基末端分析抗体Met FLAG BAP、氨基末端FLAG-BAP和羧基末端FLAG-BAP融合蛋白和Invitrogen Posite…

跳槽,从这一个坑,跳进另外一个坑

软件测试员跳槽有一个奇怪的现象:那些跳槽的测试员们,总是从一个坑,跳进另一个坑中,无论怎么折腾,也没能拿到更好的offer,更别说,薪资实现爆炸式增长,自身价值得到升华~ 在如今经验…

【Web安全】注入攻击

目录 前言 1、注入攻击 1.1 SQL注入 1.2 数据库攻击技巧 1.2.1 常见的攻击技巧 1.2.2 命令执行 1.2.3 攻击存储过程 1.2.4 编码问题 1.2.5 SQL Column Truncation 1.3 正确防御SQL注入 1.4 其他注入攻击 1.4.1 XML注入 1.4.2 代码注入 1.4.3 CRLF注入 前言 年…

Kotlin高仿微信-第53篇-添加好友

Kotlin高仿微信-项目实践58篇详细讲解了各个功能点,包括:注册、登录、主页、单聊(文本、表情、语音、图片、小视频、视频通话、语音通话、红包、转账)、群聊、个人信息、朋友圈、支付服务、扫一扫、搜索好友、添加好友、开通VIP等众多功能。 Kotlin高仿…

数商云SRM系统询比价有何优势?供应商平台助力汽车零部件企业快速查找供应商

随着中国汽车行业的高速发展、汽车保有量的增加以及汽车零部件市场的扩大,我国汽车零部件行业得到了迅速发展,增长速度整体高于我国整车行业。数据显示,我国汽车零部件的销售收入从2016年3.46万亿元增长至2020年的4.57万亿元,年均…

世界杯——手动为梅西标名

梅西的铁粉来集赞啦。 今天带来了一个为图片添加字样的小功能,我们的测试目标图片是: 我们的测试目标是: 我们使用的是Python语言,使用了Image包用作图片处理,matplotlib包用作坐标查阅,这个坐标还是很好看…

微服务框架 SpringCloud微服务架构 8 Gateway 网关 8.5 全局过滤器

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构8 Gateway 网关8.5 全局过滤器8.5.1 全局过滤器 GlobalFilter8.5.2 案例8.…

segmentation

(用于医学图像分割的金字塔医学transformer) Pyramid Medical Transformer for Medical Image Segmentation 基于CNN的模型通过低效地堆叠卷积层来捕获长期依赖性,但基于注意力的模型明确地构建了所有范围的关系。然而,为全局关系分配可学习参数是昂贵…

WebAPI项目搭建及其发布测试

目录 1.创建项目 2.配置 3.发布 4.测试页面 1.创建项目 (1)创建ASP.NET Web应用程式,如下图: (2)选择Empty,勾选Web API,点击确定创建,如下图: (3&#x…

解决Netty那些事儿之Reactor在Netty中的实现(创建篇)-上

本系列Netty源码解析文章基于 4.1.56.Final版本 在上篇文章深入讲解Netty那些事儿之从内核角度看IO模型中我们花了大量的篇幅来从内核角度详细讲述了五种IO模型的演进过程以及ReactorIO线程模型的底层基石IO多路复用技术在内核中的实现原理。 最后我们引出了netty中使用的主从…

代码随想录刷题day52 300.最长递增子序列;674. 最长连续递增序列;718. 最长重复子数组

代码随想录刷题day52 300.最长递增子序列;674. 最长连续递增序列;718. 最长重复子数组 二维dp的初次应用,关于子序列的一系列问题。 300.最长递增子序列 300. 最长递增子序列 - 力扣(Leetcode) 子序列的一个入门题…

java中set接口、哈希表、哈希值、HashSet、LinkedHashSet、方法的可变参数

set接口: set接口和list接口一样,都是继承于Collection接口,它与Collection接口中的方法基本一致。特点:不允许存储重复元素,元素没有索引。它主要有两个实现类:HashSet(具有哈希表结构&#x…