python虚拟环境下打包exe详细步骤,可降低exe文件大小20倍!

2023-11-09


前言

通常使用pyinstaller直接打包py文件会把所有相关的环境打包进去,导致生成的exe文件超级大,而使用虚拟环境可以有针对性的对环境进行打包,减小exe的文件大小。本文使用Anaconda通过实践案例带大家过一遍如何使用虚拟环境打包py文件,及打包后报错的一些注意事项。`

本案例直接打包后大小为246M,使用虚拟环境打包后只有13M,效果不言而喻。


提示:以下是本篇文章正文内容,下面案例可供参考

一、安装Anaconda

网上方法很多,这里跳过。

二、创建并激活虚拟环境

1.创建虚拟环境

运行“Anaconda Prompt”,根据自己安装的python版本输入对应命令,我这里要对一个定时截图小程序进行打包,出现的界面输入创建虚拟环境的指令。成功创建了一个名字为jietu,且基于python版本3.9的虚拟环境。在创建过程中需要回复(y/n),y.:

conda create -n 虚拟环境名字jietu python==3.9    #创建虚拟环境

创建虚拟环境
确认

2.激活虚拟环境

再激活虚拟环境,路径自动跳转至虚拟环境中,输入conda list可以查看当前虚拟环境里已经安装的库。:

conda activate 虚拟环境名字jietu    #激活虚拟环境
conda list    #查看虚拟环境里已经安装的库

激活虚拟环境
conda安装的虚拟环境,会把虚拟环境的目录生成在anaconda安装目录下的env目录下。使用命令conda info –envs可查看conda环境下所有的虚拟环境,我这里只有新建的一个jietu。

conda info –envs    # 查看conda环境下所有的虚拟环境

我的虚拟环境

3.查看自己的py文件用到的库并在虚拟环境中安装

查看自己的py程序有哪些库,我这里的程序只有pyautogui需要安装(实际可能还缺其他相关依赖库,打包后运行可检查)。
用到的库
安装库1
安装打包库

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyautogui  #安装需要的库
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller   #安装打包库

切换至代码所在目录,我的是在E:\python\定时截图。

切换目录

4.打包exe

准备好exe文件图标,图片格式为ico,可以在格式工厂转换。输入命令开始打包。最终的exe在dist里面,其他的都可以删了。
准备
打包

Pyinstaller -F -i photo.ico jietu.py    #打包成exe

生成的
虚拟下大小
通过虚拟环境打包后是12.7M,而直接打包是246M,效果杠杠的。
直接打包

5.检查exe

运行检查是否正常运行,结果发现报错,提示缺少相关库pillow,所以再安装一下。
检查
切换至虚拟环境的原始目录C盘中,安装pillow库。
切换目录安装

C:    #切换路径到原始虚拟路径
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pillow    #安装库

切换至虚拟环境下的代码路径E盘中,再按步骤4打包即可。运行程序检查是否正常。
再打包
正常运行
结果图

三、退出虚拟环境

conda deactivate  #退出虚拟环境

退出


总结

本文通过真实案例,详细介绍了虚拟环境下打包exe的步骤,结果表明此方法可以大大降低打包文件的大小,喜欢的话欢迎关注、点赞和评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python虚拟环境下打包exe详细步骤,可降低exe文件大小20倍! 的相关文章

  • Python串口通信

    我正在开发一个 Arduino 项目 由于内存限制 我将其与 Python 脚本连接起来 在Python方面 我有一个二维矩阵 其中包含各自的x y坐标值 并且在此列表中有26000个坐标对 因此 为了向大家澄清数据结构 pathlist
  • mod_wsgi 下的 psp(python 服务器页面)代码?

    有没有办法在 apache mod wsgi 下运行 psp python 服务器页面 代码 虽然我们正在转向基于 wsgi 的新框架 但我们仍然有一些用 psp 编写的遗留代码 这些代码在 mod python 下运行 我们希望能够在托管
  • 如何解决 Python 'Pyzbar' 库的导入错误?

    我刚刚开始熟悉 Pyzbar 库 但是当使用decode方法我得到一个错误 这是代码 import cv2 import numpy as np import pyzbar code image cv2 imread C Users Ace
  • 当你不需要Python中的索引时,如何创建For循环? [复制]

    这个问题在这里已经有答案了 如果我需要一个forPython 中的循环 for i in range 1 42 print spam 但不要使用i对于任何事情 pylint 都会抱怨未使用的变量 我应该如何处理这个问题 我知道你可以这样做
  • 生成非连续组合

    我正在尝试创建一个生成器 支持执行 next 的迭代器 可能在 python 中使用yield 它给出来自 1 2 n n 和 r 是参数 的 r 元素的所有组合 这样在选出的r个元素 没有两个是连续的 例如 对于 r 2 且 n 4 生成
  • python 线程是如何工作的?

    我想知道 python 线程是并发运行还是并行运行 例如 如果我有两个任务并在两个线程中运行它们 它们是同时运行还是计划同时运行 我知道GIL并且线程仅使用一个 CPU 核心 这是一个复杂的问题 需要大量解释 我将坚持使用 CPython
  • 使用 python 在网络上部署 matlab 应用程序

    您好 我想使用 python 在网络上部署 matlab 应用程序 有没有办法做到这一点 我已按照数学工作网站上的文档将我的应用程序转换为 jar 文件 java 类 有人能指出我前进的正确方向吗 事实上 您的 Matlab 代码打包为 J
  • Pymacs 助手在 30 秒后未启动

    我见过其他关于此的问题 但没有一个得到真正的回答 而且没有一个是我的问题 我有一个新系统 emacs 23 1 Centos 6 2 我认为 我下载了最新的 pymacs 并安装了它 但是 我得到 error Pymacs helper d
  • 使用 PyQt4 在 QWidget 上进行 eventFilter

    我有一个 QMainWindow 其中包含DrawingPointsWidget 该小部件随机绘制红点 我通过使用以下命令为 MouseHovering 事件安装事件过滤器 在 QMainWindow 的状态栏中显示鼠标坐标self ins
  • scikit-learn - 具有置信区间的 ROC 曲线

    我可以使用 ROC 曲线scikit learn with fpr tpr thresholds metrics roc curve y true y pred pos label 1 where y true是基于我的黄金标准的值列表 即
  • Python NET 调用具有返回值和输出参数的 C# 方法

    我有以下静态 C 方法 public static bool TryParse string s out double result 我想使用 Python NET 包从 Python 调用它 import clr from System
  • 如何解析代码(Python)?

    我需要解析一些特殊的数据结构 它们采用某种类似 C 的格式 大致如下所示 Group GroupName C Style comment Group AnotherGroupName Entry some variables 0 3 141
  • Pandas:Drop() int64 基于值返回对象

    我需要删除其中一列低于某个值的所有行 我使用了下面的命令 但这将列作为对象返回 我需要将其保留为int64 df customer id df drop df customer id df customer id lt 9999999 in
  • pyspark:将 schemaRDD 保存为 json 文件

    我正在寻找一种将数据从 Apache Spark 以 JSON 格式导出到各种其他工具的方法 我认为一定有一种非常简单的方法来做到这一点 示例 我有以下 JSON 文件 jfile json key value a1 key2 value
  • python:Windows终端中的unicode,使用的编码?

    我在 Windows 7 终端中使用 Python 解释器 我正在尝试了解 unicode 和编码 I type gt gt gt s gt gt gt s x89 gt gt gt u u gt gt gt u u xeb 问题1 字符串
  • hashlib 和 urandom 哪个更随机?

    我正在和一个朋友一起开发一个项目 我们需要生成随机哈希 在我们有时间讨论之前 我们都提出了不同的方法 并且因为他们使用不同的模块 我想问你们大家什么会更好 如果有这样的事情的话 hashlib sha1 str random random
  • numpy 沿第一个轴添加

    我想通过简单地沿第一个轴执行相同的加法来添加两个具有不同维度的数组 非矢量化解决方案 x np array 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 shape 4 3 2 y np a
  • 如何在 python pandas 中的同一列上进行分组并将唯一值的计数和某些值的计数作为聚合?

    我的问题与我之前的问题有关Question https stackoverflow com questions 42022767 how to do group by and take count of one column divide
  • Mac OS X 上的 Python 框架和非框架构建之间的差异

    Question Mac OS X 上的 Python 框架构建和非框架构建 即标准 UNIX 构建 之间有什么区别 另外 各自的优点和缺点是什么 初步研究 以下是我在发布此问题之前找到的信息 Pythonmac SIG Why is Fr
  • 将下载的字体添加到 Tkinter

    我想下载一个开源字体并在我的 Python Tkinter 程序中使用它 如何告诉 Tkinter 从目录导入字体或将字体放在与程序相同的文件夹中 Note 我已经寻找答案一段时间了 甚至阅读了 Tkinter 的 API 参考 了解我能找

随机推荐

  • 常见中间件漏洞复现

    目录 Tomcat 1 Tomcat 文件上传 CVE 2017 12615 2 Tomcat 代码执行 CVE 2020 1938 3 Tomcat弱口令登录获取后台 Weblogic 4 Weblogic反序列化漏洞获取服务器权限 CV
  • Vuex4(Module)+Typescript的基本使用

    一 Vuex4介绍 vuex 是一个专为 Vue js 应用程序开发的状态管理模式 库 它采用集中式存储管理应用的所有组件的状态 并以相应的规则保证状态以一种可预测的方式发生变化 vuex包括五大核心概念分别是State Getter Mu
  • Sql server 千万级大数据SQL查询优化的几点建议

    1 对查询进行优化 应尽量避免全表扫描 首先应考虑在 where 及 order by 涉及的列上建立索引 2 应尽量避免在 where 子句中对字段进行 null 值判断 否则将导致引擎放弃使用索引而进行全表扫描 如 select id
  • 应“云”而生的云数据库,让数据从“江河”到“大海”

    随着信息技术的发展 互联网应用的加速普及 人类进入了数字经济时代 进入二十一世纪以后 随着移动互联网技术 物联网技术 5G等技术的发展 全球数据圈 Global Datasphere 呈指数级递增 IDC预测全球数据将于2025年增长至17
  • [USACO Dec20 Bronze]Stuck in a Rut

    Farmer John 最近扩大了他的农场 从奶牛们的角度看来这个农场相当于是无限大了 奶牛们将农场上放牧的区域想作是一个由正方形方格组成的无限大二维方阵 每个方格中均有美味的草 将每个方格看作是棋盘上的一个方格 Farmer John 的
  • RANSAC算法实现图像全景拼接

    文章目录 一 全景拼接的原理 1 RANSAC算法介绍 2 使用RANSAC算法来求解单应性矩阵 3 拼接图像 二 全景拼接实验 1 针对固定点位拍摄多张图片 以中间图片为中心 实现图像的拼接融合 1 输入图片 2 代码 3 运行结果 4
  • 单向链表双向链表优缺点

    单向链表优缺点 1 优点 单向链表增加删除节点简单 遍历时候不会死循环 2 缺点 只能从头到尾遍历 只能找到后继 无法找到前驱 也就是只能前进 双向链表优缺点 1 优点 可以找到前驱和后继 可进可退 2 缺点 增加删除节点复杂 多需要分配一
  • 陈嘉哲:黄金原油跳水承压,日内或将延续,如何操作?附操作建议

    陈嘉哲 7 6黄金原油跳水承压 日内有望继续下行 如何操作 附操作建议 无论行情暴涨 暴跌 单边还是震荡 你是不是总是没把握住 就是所谓的一买就跌 一跌就割 一割就涨 一涨就追 一追又套 一套再割 这就像一个死套 资金不断的缩水 过程一直在
  • 银保监局315再点名元宇宙炒作,又见监管难题,立法是否当务之急

    3月15日 北京银保监局发布 理性消费不乱贷 美好青春不负债 风险提示指出 目前网络上出现一些 小游戏 假借 元宇宙 区块链 等概念进行炒作 这是继2月18日银保监会发布 关于防范以 元宇宙 名义进行非法集资的风险提示 后 监管部门再次点名
  • 6种常用开源协议介绍

    为什么要有开源协议呢 其一 保护原作者的知识成果 防止被恶意利用 开源协议中一般都包含有免责声明 可以防止原作者承担相应风险和后果 比如你开源了一个破解Windows秘钥的软件 而使用者却用来进行商业资料窃取 那么你是不需要为此承担责任的
  • vscode的eslint配置保存自动修复代码

    提示 本文展示了vue项目中配置eslint 在vscode编辑器中保存后可以自动修复 文章目录 前言 一 vscode配置 二 vue项目package json中与eslint相关的配置 总结 前言 本次配置达到的效果 vue代码格式有
  • React 性能优化指南之性能分析与16种优化方法大总结

    本文分为两个部分 1 如何分析 React性能 1 1 性能分析指标有哪些 1 2 性能分析的两个阶段 1 3 通过工具查看指标和度量 2 16个React 性能优化方法 2 1 前端通用优化 2 2 减少不必要的组件更新 2 3 提交阶段
  • android 焦点控制及运用

    http gundumw100 iteye com blog 1779247 setFocusable 设置view接受焦点的资格 isFocusable view是否具有接受焦点的资格 setFocusInTouchMode 对应在触摸模
  • B样条曲线的公式推导及代码实现

    本文仅简述B样条曲线的公式推导 并给出了一种代码实现 在阅读本文之前 请确保你已经对B样条曲线的背景知识有所了解 相关知识可以通过以下课程进行学习 MOOC 计算机图形学 中国农业大学 赵明或者观看B站搬运版 公式定义 给定如下参数 n 1
  • mipi 调试经验

    以下是最近几个月在调试 MIPI DSI CSI 的一些经验总结 因为协议有专门的文档 所以这里就记录一些常用知识点 一 D PHY 1 传输模式 LP Low Power 模式 用于传输控制信号 最高速率 10 MHz HS High S
  • 开源协议--GUN LGPL

    LGPL 是GPL的一个为主要为类库使用设计的开源协议 和GPL要求任何使用 修改 衍生之GPL类库的的软件必须采用GPL协议不同 LGPL 允许商业软件通过类库引用 link 方式使用LGPL类库而不需要开源商业软件的代码 这使得采用LG
  • 去除视障,重现清晰

    论文 https arxiv org abs 2004 01180 代码 https github com alex04072000 ObstructionRemoval 模型262m tensorflow 的 模型地址 https dri
  • Matlab中xlsread 函数读取excel表格数据或者字符串

    先给出pailie3 xlsx部分数据 一 关于xlsread函数 fid xlsread pailie3 xlsx 第二列为字符串 读出来显示NaN Not a Number 不是数字 且fid类型为double 2 num txt ra
  • 解决VS安装无法联网下载问题

    离线安装VC 14 0 build tools的解决方案 在能正常通过visualcppbuildtools full exe 联网获取安装文件的电脑上 在系统自带的cmd exe中在对应目录下执行 visualcppbuildtools
  • python虚拟环境下打包exe详细步骤,可降低exe文件大小20倍!

    python虚拟环境下打包exe详细步骤 可降低exe文件大小20倍 前言 一 安装Anaconda 二 创建并激活虚拟环境 1 创建虚拟环境 2 激活虚拟环境 3 查看自己的py文件用到的库并在虚拟环境中安装 4 打包exe 5 检查ex