我们在编写代码时依赖的是本地环境,使用的是本地代码编译器。我们可以设想一种情况:当我们做好一个脚本或者工具,想要给其他人用,这个时候还需要在别人的电脑上装好python环境和编译器吗?那肯定比较麻烦,最快捷的方式就是将本地的.py文件直接打包成.exe的可执行文件,这样在任何电脑上只需要点击可执行文件那么代码就可以运行。
在python中,最常用的打包方式就是使用pyinstaller包,接下来我将详细介绍其用法~
类似我们在本地使用编译器进行代码运行,打包时会将编译器进行打包。同时我们写的代码所依赖的所有包都会被一同打包,为了防止漏打包的情况,pyinstaller进行打包时往往可能会多打包而基本不会漏打。
首先我们需要使用pip安装pyinstaller模块,在终端中输入:
打开编译器终端(terminal),使用pyinstaller语句对py文件进行打包,最基础的打包语句如下:
语句中xxx.py指的是需要打包的.py文件名,打包完之后可以在项目文件的dist文件夹中找到.exe可执行文件。
加入-w可以关闭点击exe文件后启动的黑色控制台,如下:
此外pyinstaller还有其他可选的参数,如果我们想要改变.exe可执行文件的图标可以使用以下语句:
其中xxx.ico的位置是ico类型文件的名称,可以填写ico图标的路径或者把ico图标放在和.py文件相同的文件夹下,才可顺利打包,推荐两个ico图标相关的网站:
ico图标在线转换工具https://ico.nyaasu.top/
阿里巴巴矢量库https://www.iconfont.cn/?spm=a313x.search_index.i3.d4d0a486a.350c3a81r6W4KE
类似的还可以把-F替换成其他参数,参考下表:
通用打包语句如下,大家可以按自己需求删改:
四个xxx的位置中第一个是当前.py文件的文件名,第二个是ico图标的文件名,第三个是要重命名的名称,第四个是启动图片名称,默认把所有相关图片都放在与py文件同一个文件夹下,也可以使用图片文件的绝对路径引用。
如下图,我们准备好三个文件,分别是.py文件,ico图标文件和png加载图片的文件。
在终端中输入如下指令:
按照我们的预想,应该生成一个带ico图标的在,单文件的,无黑色控制台的,名称为test_rename的.exe可执行文件,同时在启动时,还会有一个加载图片动画img.png。
打包完成后的情况的确如此:
主文件夹中会生成一个build文件夹,一个dist文件夹,一个spec文件,dist文件夹中存有.exe文件,其为单文件模式,exe文件中打包了所有依赖库,可以直接拿来使用
在我们使用pyinstaller模块直接对.py文件进行打包时,常常会发现打包出来的文件异常的大,尤其是当代码中需要使用到numpy,pandas,pyside这种大型库,打包出来的文件往往可能达到百兆大小的级别,因此如何降低打包出来的文件大小是非常重要的,我整合了网上的一些方法,结合了一些自己的理解,提供给大家参考。
直接使用pyinstaller打包时,可能会把其所有可能用到的包和依赖项全部打包,有些时候我们可能没有用到某个包,但是也import了,就会导打包文件偏大。此时若我们创建一个全新的虚拟环境,打包出来的效果可能会更好,包大小也可能会显著减小。
安装pipenv环境:
在虚拟环境中安装python,不指定版本则会默认安装:
进入虚拟环境:
在虚拟环境中安装要用到的各种包:
查看当前虚拟环境中包的数量:
确认需要的所有包都安装完成后,再使用前面的方法进行打包操作:
upx (the Ultimate Packer for eXecutables)是一款先进的可执行程序文件压缩器,压缩过的可执行文件体积缩小50%-70% ,这样减少了磁盘占用空间、网络上传下载的时间和其它分布以及存储费用(百度百科)
虽然话是这么说,但实际上在使用时往往会发现UPX可能只能减少很有限的大小,还是需要去尝试一下看看效果。
pyinstaller在进行打包时自动会检测调用UPX,一般情况下UPX是缺失的,需要我们手动下载。在使用pyinstaller进行打包时指定其目录即可,例如下载到E盘,E:UPX,在打包时的语句如下:
UPX的官方下载网站如下:
点击打开UPX下载网站https://upx.github.io/
当然,以上只是两种主流解决办法,网络上还有很多方法,例如使用pyinstaller的docker镜像打包,如果使用上述两种方法没有解决问题的话还可以去网上查阅。
今天在打包时发现被防火墙拦截了,使用的是pyinstaller -F -w xxx.py的语句,经检查发现-w去除黑色控制台后才会被拦截,如果不使用-w,使用pyinstaller -F 的语句就不会报毒,尝试了其他方法仍然不行,目前没有其他解决方法。
Pyinstaller中文文档https://muzing.gitbook.io/pyinstaller-docs-zh-cn
后续也会分享更多有用的知识,有什么问题都可以在评论区中指出来,感谢各位支持!作者:猫猫不吃Sakana
到此这篇python将py文件打包成exe文件(如何将python文件打包成exe)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/pythonbc/67808.html