使用pipenv解决pyindstaller打包exe文件过大的问题


前言

用anaconda安装的python写了一个简短的程序打包发布exe,发现体积200多M,从网上吸取了经验,使用pipenv重新打包到10M以下。


一、问题:python生成的exe体积过大

笔者写了个小的程序,在引入一个外部依赖包后,生成的exe体积直接增大几十倍到了数百M,显然是不合理的。

二、问题解决

善用百度必应谷歌的我开始在网上搜,发现这也只是一个小问题,网上已经有了很多解决方案,在此记录一下,留作以后备用。

1.使用from … import

上面提到的将 import xxx 改为 from xxx import xxx 虽然在此无效,但对于一些动辄几百M的依赖包(比如numpyPandas)是有用的。

2.使用压缩工具UPX

UPX是一款非常不错的程序文件压缩工具,使用upx压缩过的可执行文件体积缩小50%-70% ,可以大大减少了磁盘占用空间。
但是我懒不想装新程序 但是我觉得自己面对的问题应该是哪里没处理好,而不是代码写的太多导致程序很大,用这个治标不治本。
以及我看到了第三个方法:

3.在anaconda下使用pipenv重新打包exe

看起来这个才是最靠谱的,因为我在pycharm中直接用的conda里的python (因为懒没装本地环境)
“而在anaconda环境下打包时会引入很多不必要的文件,导致在生成exe文件过大,而在虚拟纯净环境里打包程序可以有效避免。”对比自己的情况,非常契合。

以下为操作步骤:

  1. 首先在需要作为虚拟环境的文件夹内执行pip install pipenv命令
  2. 在安装成功后使用pipenv shell命令,进入虚拟环境(pipenv建的虚拟环境名好像是随机的)虚拟环境名还挺乱的
  3. 进入虚拟环境后,先使用pipenv install pyinstaller安装pyinstaller(这是在虚拟环境内安装,和外面环境安装的互不干涉)
  4. 安装你python文件需要的库,安装命令是pipenv install 包名,和原来pip安装库的命令差不多,但要注意不是pip是pipenv
  5. 最后就可以在虚拟环境内使用pyinstaller -F 文件名 进行打包了,打包好的exe程序在当前目录下的dist文件夹内。

试了一下,回到10M以内,nice~


总结

以上就是本次笔记,除了做一份备忘之外,还有就是联系解决问题的思路(虽然靠百度也不是啥高深路子)

本文参考链接:https://www.zhihu.com/question/268397385/answer/2505930043

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值