【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 --rm

#建立新虚拟环境

pipenv install

#进入虚拟环境

pipenv shell

#安装模块

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

#打包的模块也要安装

pip install pyinstaller

#开始打包

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

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

遇到bug

删除原虚拟环境,运行 pipenv --rm 的时候,我遇到一个报错,AttributeError: version ,不单单是这个命令,凡是pipenv相关的命令,都会有这个报错。

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

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

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

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

结论

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

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

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

参考文献

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

发布了33 篇原创文章 · 获赞 2 · 访问量 1458

猜你喜欢

转载自blog.csdn.net/qq_34965596/article/details/103481494
今日推荐