文章撰写原因
我们开发的脚本一般都会用到一些第三方包,可能别人也需要用到我们的脚本,如果我们将我们的xx.py文件发给他,他是不能直接用的,他还需要安装python解释器,甚至还要安装我们用的那些第三方包,是不是有点小麻烦?但是我们都知道,PC是可以直接运行exe文件的,这就为我们提供了一个便捷的方式。所以,从看了这个教程以后,这都将成为过去式,打成exe之后,分享即可用。
【注意】如果打包为exe的话,版本尽量选择python3.6+32位版本,因为win64位系统向下兼容32位程序,但是如果不考虑32位系统的话无所谓,直接python64位版本直接打包就可以,只是只能在win64位系统上跑。
一、安装pyinstaller
在这里我使用的清华园的镜像进行安装的
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller
【注意】:记得一定要把pip升级成最新版的pip在安装pyinstaller哈。要不然可能会出现莫名奇妙的问题。
二、pyinstaller打包机制
我们写的python脚本是不能脱离python解释器单独运行的,所以在打包的时候,至少会将python解释器和脚本一起打包,同样,为了打包的exe能正常运行,会把我们所有安装的第三方包一并打包到exe。
三、example示例
这里我将自己给同事写的一个.py文件进行一个打包。
1、我们来将这个.py的文件打包成一个exe,我们直接cmd切换到这个脚本的目录,执行命令:pyinstaller-F jz.py,如下图所示。
ps: -F参数表示覆盖打包,这样在打包时,不管我们打包几次,都是最新的,这个记住就行,固定命令。
2、执行完毕之后,会生成几个文件夹,如下图所示。
3、在dist里面呢,就有了一个exe程序,这个就是可执行的exe程序,如下图所示。
4、我们把这个setup.exe拖到和setup.py平级的目录,我们来运行一下这个就可以了。
5、这样,我们就完成了一个打包工作,如果别人需要,即使没有python环境,他依然可以运行。
6、执行 pyinstaller -F -wsetup.py 多加-w以后,就不会显示黑洞洞的控制台了,这里就不做演示啦!
7、但是我们打包的exe,我们的图标呀,实在是有点丑陋,默认的,没有一点自己的风格,那么,我们应该怎么改一下呢?默认打包图片,如下图所示。
加上 -i 参数之后,如下图所示,会形成一个类似风力发电机的logo图案。
ps:程序路径最好全部都是英文,否则可能会出现莫名其妙的问题
总结
Pyinstaller -F setup.py 打包exe
Pyinstaller -F -w setup.py 不带控制台的打包
Pyinstaller -F -i xx.ico setup.py 打包指定exe图标打包