Python打包exe 以及压缩大小方法

本文将介绍如何把python文件打包成exe程序,因为通常会遇到打包后的exe程序会非常大,所以也介绍两种可以压缩大小的方法。


前言

事情的起因主要是我写了一个Pyqt5的界面用于批量处理图片,为了之后更方便运行,于是打算将代码打包成exe


一、标准方法——pyinstaller库

1.下载pyinstaller

pip install -i https://pypi.douban.com/simple/ pyinstaller

2.运行指令

Pyinstaller -F ***.py #打包exe
Pyinstaller -F -w ***.py #不带控制台的打包
Pyinstaller -F -w -i ***.ico ***.py #打包指定exe图标打包

注意需要cd到pyinstaller.exe所在目录(一般在下载环境的Scripts目录下)运行指令

参数含义如下:

3.打包成功

指令运行完成后,会在当前目录下生成dist和build两个文件夹,打包结果在dist文件夹中,我的pyqt5程序打包后大小为292M,着实有点大

将运行指令中的-F替换为-D,则可以打包成目录,这种情况下生成的exe会更小,但整个目录大小会比打包成单个exe大很多

二、压缩方法一:conda新环境

该方法需要安装anaconda,如果不想安装也可以尝试pipenv库,也可以创建虚拟环境

1.新建conda环境

从开始菜单运行“Anaconda Prompt”,出现的界面输入创建虚拟环境的指令。

conda create -n 虚拟环境名字 python==3.7  #创建虚拟环境
 
conda activate 虚拟环境名字  #激活虚拟环境

2.安装程序需要的包

新环境中只有一些最基础的包,所以需要安装程序所需要的包(可以试着在新环境中运行程序,报错信息会提示缺少哪些包)

pip install <包名> -i http://pypi.douban.com/simple

注意需要在新环境中安装pyinstaller库

pip install pyinstaller -i http://pypi.douban.com/simple

3.运行指令

同上,但注意需要cd到新环境的Scripts目录下(新环境安装的pyinstaller.exe一般在 conda安装目录/envs/新建环境名/Scripts下)

Pyinstaller -F ***.py #打包exe
Pyinstaller -F -w ***.py #不带控制台的打包
Pyinstaller -F -w -i ***.ico ***.py #打包指定exe图标打包

4.打包成功

指令运行完成后,会在当前目录下生成dist和build两个文件夹,打包结果在dist文件夹中,我的pyqt5程序打包后大小为86M,相比原方法压缩了70%

三、压缩方法二:使用upx.exe压缩

1.下载upx.exe

下载网站:https://github.com/upx/upx/releases/tag/v3.96

下载相应版本(以win10系统为例)

下载后解压

2.运行指令

pyinstaller -i ***.ico -F -w ***.py --upx-dir [upx所在目录]

例如:

pyinstaller -i C:\001.ico -F -w C:\main.py --upx-dir D:\upx-3.96-win64\

注意需要cd到pyinstaller.exe所在目录(对应环境的Scripts目录)

3.打包成功

指令运行完成后,会在当前目录下生成dist和build两个文件夹,打包结果在dist文件夹中,通过调用conda新环境中的pipinstaller,我的pyqt5程序打包后大小为47M,相比原方法压缩了84%


参考资料

[1]libaineu2004的博客-CSDN博客_python如何打包脚本

[2]Python使用pyinstaller打包几个小技巧 - 腾讯云开发者社区-腾讯云

[3]手把手教你将pyqt程序打包成exe(1)_tb_youth的博客-CSDN博客_pyqt程序打包

  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值