当前位置:网站首页 > Python编程 > 正文

python将py文件打包成exe文件(如何将python文件打包成exe)



我们在编写代码时依赖的是本地环境,使用的是本地代码编译器。我们可以设想一种情况:当我们做好一个脚本或者工具,想要给其他人用,这个时候还需要在别人的电脑上装好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替换成其他参数,参考下表:

参数 描述 -F 只会打包为一个单独的.exe文件,所有的依赖包括库之类的全部都被打包进exe文件(单文件模式) -D 打包后会产生一个.exe文件和其依赖文件的文件夹(多文件模式) -C 产生一个黑色控制台(默认)调试时常常需要使用 -w 隐藏黑色控制台,一般是在写一个GUI应用时使用,只显示GUI 窗口而隐藏控制台 -i 或 -icon  将可执行文件的图标改成指定的ico图标 -n  重命名.exe文件的名称 –splash  添加启动文件画面图,用于等待加载

通用打包语句如下,大家可以按自己需求删改:

 

四个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)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • py文件怎么执行电脑(python执行py文件)2025-04-10 13:09:10
  • 服务器配置pytorch环境(服务器部署python程序)2025-04-10 13:09:10
  • 安装node(安装nodesass报错python)2025-04-10 13:09:10
  • pymysql返回字典(python字典对象的方法返回字典的键列表)2025-04-10 13:09:10
  • py文件用什么运行(python3.7运行py文件)2025-04-10 13:09:10
  • python函数大全及详解app(python函数大全及详解 pdf)2025-04-10 13:09:10
  • 列表的增删改查Python编程进阶4.1列表(python列表增删改查函数)2025-04-10 13:09:10
  • pythonprint占位符(python占位符用法)2025-04-10 13:09:10
  • 安装node-sass报错找不到visual studio(安装node-sass报错找不到Python)2025-04-10 13:09:10
  • ubuntu源码安装python(ubuntu怎么安装python3.8)2025-04-10 13:09:10
  • 全屏图片