python编译成exe太大,python生成的exe太大
写完一个小工具,想打包成exe文件方便使用,当然也不难。因为除了写Python的人,大部分人的电脑里都没有Python编译器,所以把它打包成exe,让别人(windows)双击打开,是一项必备技能。
用Pyinstaller直接打开cmd:
py-fw c:\ users \ 30797 \ desktop \ python \ main . py-f打包成一个文件。
-w是无调试窗口。
打包完了,看文件,147M!难怪打包要花这么长时间。
查找问题,在网上查了一下资料,发现很多不必要的模块在我打包的时候就打包了。我不得不用纯蟒蛇皮包装它们。
那么如何用纯Python打包呢?您可以使用pipenv模块。
解决方案打开cmd:
# Install pipenv,这里默认使用python3。
Pip安装pipenv #创建新的虚拟环境
Pipenv install #到虚拟环境中
Pipenv shell #安装模块
pip py项目#打包模块中使用的模块也应该安装。
Pip安装pyinstaller #开始打包。
py-fw c:\ users \ 30797 \ desktop \ python \ main . py打包。看尺寸,6M!成功!
Pipenv - rm #该命令可用于删除原始虚拟环境。例如,当模块过多时,可以删除并重建虚拟环境。
当我在构建新的虚拟环境并运行pipenv install时遇到了一个错误,AttributeError: version。不仅是这个命令,所有与pipenv相关的命令都会出现这个错误。
后来查阅资料,发现系统中有多个版本的python。我系统中的python2干扰了python3中pipenv的正确运行。解决方案如下:
1.在python3安装目录下找到并修改_registry.py文件。
路径:E:\Python38 \ lib \ site-packages \ pipenv \ vendor \ Python finder \ _ vendor \ pep 514 tools \ _ registry . py2,将所有软件\Python in _REG_KEY_INFO字典修改为E:\ Python 38,然后保存。再次运行pipenv install,发现没有报告错误。
关键是pyinstaller要安装在虚拟环境中。
如果你在虚拟环境中没有安装pyinstaller,也可以使用pyinstaller命令,但是调用的是你系统原来的python编译器,其中包含了很多关联库,导致即使在虚拟环境中,你打包的exe文件仍然很大。
还有一点需要注意的是:在虚拟环境中安装你的py文件中调用的库,否则打包时无法正常工作。
参考https://www.cnblogs.com/chenbocheng/p/10839322.html
https://github.com/pypa/pipenv/issues/2983
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。