前言
刚开始接触python的时候,我们所运行的程序基本都是.py后缀的脚本文件,但是如果我们想把自己编写的脚本程序给客户或者其他非专业人士使用,假如也直接给他们.py文件,那就不太合适了,这样他们还需要安装python解释器,甚至还要安装我们使用过的那些第三方包。
那么要怎么做呢?我们都知道,window系统是可以直接运行exe文件的,如果我们能够把.py文件转化成exe可执行文件,然后直接把exe文件给到其他人,那不就OK了吗?目前市面上流行的把.py转化为.exe文件的方案有好几种,例如py2exe,pyinstaller,cx_Freeze,nuitka等。
本篇文章我们主要是来借助pyinstaller这个库来吧Python程序打包成exe程序。
一、安装pyinstaller
要使用pyinstaller,当时是先要安装它,这里我们使用pip来安装一下这个第三方库,打开命令行输入pip install pyinstaller,如下图所示。
输入pyinstaller --version,如果成功打印出了pyinstaller 的版本号,说明我们已经成功安装了pyinstaller
二、pyinstaller打包机制
我们写的python脚本是不能脱离python解释器单独运行的,所以在打包的时候,至少会将python解释器和脚本一起打包,同样,为了打包的exe能正常运行,会把我们所有安装的第三方包一并打包到exe。
即使我们的项目只使用的一个requests包,但是pyinstaller不会管这些,因为包和包之间是存在依赖关系的。例如我们只安装了一个requests包,但是在安装requests包的过程中,我们还会顺带安装了一些其他的依赖,pyinstaller为了安全,会自动将所有和requests相关联的第三方包+python解释器一起打包。如下图所示。
三、编写一个简单的python程序
这里我们导入一个win32gui库,然后调用这个库的API,创建一个很常见的Window弹窗,代码如下
import win32con
import win32gui
if __name__ == '__main__':
win32gui.MessageBox(win32con.NULL, 'HelloWorld', 'Python', win32con.MB_OK)
首先我们使用python解释器运行这个脚本,可以得到如下图所示的结果
四、把.py文件打包为Window平台可执行的exe文件
对我们刚才使用python编写的小程序main.py进行打包操作,首先打开电脑的命令行,并切换到当前目录:
我们在命令行中输入pyinstaller -F main.py,然后只要需要等待编译成功即可:
待操作完成之后,便会在当前目录生成一些新的文件和文件夹:
打开dist文件夹,里面这个时候应该存在一个main.exe文件,点击这个文件,就能看到我们刚才使用python所编写的window窗口了
五、需要注意的一些事项
1、本项目使用的针对32位系统的版本号为3.7.0的python解释器
2、pyinstaller -F main.py中的**-F**参数表示覆盖打包,这样在打包时,不管我们打包几次,都是最新的,这个记住就行,固定命令。
3、使用pyinstaller -F -w main.py命令,可以去除exe程序运行起来之后,后方黑洞洞的控制台窗口,增加我们的观感和体验:
4、使用pyinstaller -F -w -i wind.ico main.py命令,可以指定我们生成的exe可执行文件的图标