【debug】python打包成exe,太大了该怎么解决?

事情经过

写了个小工具,想打包成exe文件方便使用,这当然不是什么难事。因为除了写Python的,绝大多数人电脑里都没有Python编译器,所以打包成exe,让别人(windows)双击就可以打开,也算是必备技能了。

直接用Pyinstaller,打开cmd:

pyinstaller -Fw C:\Users\30797\Desktop\python\Main.py

-F 是打包成一个文件
-w是不出现调试窗口

打包完成后,一看文件,147M!怪不得打包了这么久。

查找问题

上网查了下资料,发现是打包的时候打包了很多不必要的模块进去,要用纯净的Python来打包。

那么该如何用纯净的Python来打包呢,可以使用pipenv模块

解决方法

打开cmd:
#安装pipenv,这里默认使用python3

pip install pipenv

#建立新虚拟环境

pipenv install

#进入虚拟环境

pipenv shell

#安装模块

pip install py项目里面用到的模块

#打包的模块也要安装

pip install pyinstaller

#开始打包

pyinstaller -Fw C:\Users\30797\Desktop\python\Main.py

打包完成,一看大小,6M!成功!

pipenv --rm # 此命令可以用于删除原虚拟环境,比如模块太多的时候,可以删除重建虚拟环境

遇到bug

建立新虚拟环境,运行 pipenv install 的时候,我遇到一个报错,AttributeError: version ,不单单是这个命令,凡是pipenv相关的命令,都会有这个报错。

后来通过查阅资料,发现是系统中存在多个版本python的原因,我系统中存在的python2干扰了python3中pipenv的正确运行,解决方法如下:

1、在python3安装目录下找到并修改 _registry.py 文件

路径为:E:\Python38\Lib\site-packages\pipenv\vendor\pythonfinder\_vendor\pep514tools\_registry.py

2、修改 _REG_KEY_INFO字典 中所有 Software\Python 为 E:\Python38 ,然后保存。再次运行 pipenv install ,发现不再报错。

结论

关键点就一个:要在虚拟环境里安装pyinstaller

如果你没有在虚拟环境中安装pyinstaller,你同样可以使用pyinstaller命令,但是调用的是你系统原本的那个python编译器,内含很多关联库,导致即使在虚拟环境中,你打包的exe文件仍然非常大。

另外一点要注意的是:要在虚拟环境里安装好你py文件中调用的库,不然打包出来也没法正常运行。

参考文献

https://www.cnblogs.com/chenbocheng/p/10839322.html
https://github.com/pypa/pipenv/issues/2983

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值