为什么要生成EXE
python语言是一种很方便的语言,目前有赶超java的趋势。对于自己写的程序,如果想分享给他人,就要发送.py文件,但是要求对方有python的环境,否则就GG了;当然,作为这么厉害的语言,肯定有解决办法啦!将将.py文件生成为.exe文件不就好了?!py文件通常需要运行在Python编程坏境中,而可执行exe文件更方便。
整理了一下,大概有Py2exe和pyinstaller和cx_Freeze三种方法实现文件转化。
py2exe:这个是知名度最高的,但是好像不太适合新手,需要各种库,用起来比较繁琐,不推荐。pyinstaller:可以只是生成单独的可执行程序。最新版本为3.2.1Stable,supportsPython2.7,3.3–3.5。可以自定义图标。跨平台,兼容性良好。cx_Freeze:这个打包质量挺好,操作也简单。缺点是不能生产单独的可执行文件,结果就是exe文件被淹没在众多文件中,看着不高大上。各种方式对比图如下:
py2exe打包完后只能在相同系统下运行;打包同时需要打包dll文件等各种文件
pyInstall打包完以后只有一个exe运行文件。
小编装了pyinstaller,效果不错。下面介绍使用pyinstaller将py文件打包成exe文件的具体步骤。
pyinstaller安装步骤
Step1:下载pyinstaller
pipinstallpyinstaller
安装完后,检查安装成功与否:
pyinstaller--version
安装成功后,就可以使用下面的命令了:
pyinstaller:打包可执行文件的主要命令。pyi-archive_viewer:查看可执行包里面的文件列表。pyi-bindepend:查看可执行文件依赖的动态库(.so或.dll文件)pyi-...:等等。
Step2:使用PyInstaller
pyinstaller的语法:pyinstaller[options]script[script...]
specfile
最简单的用法,在和myscript.py同目录下执行命令:
pyinstallertest.py
然后会看到新增加了两个目录build和dist,dist下面的文件就是可以发布的可执行文件,对于上面的命令你会发现dist目录下面有一堆文件,各种都动态库文件和test可执行文件。有时这样感觉比较麻烦,需要打包dist下面的所有东西才能发布,万一丢掉一个动态库就无法运行了,好在pyInstaller支持单文件模式,只需要执行:
pyinstaller-Ftest.py
你会发现dist下面只有一个可执行文件,这个单文件就可以发布了,可以运行在你正在使用的操作系统类似的系统的下面。当然,pyinstaller还有各种选项,有通用选项,如-d选项用于debug。
在执行pyInstaller命令的时候,会在和脚本相同目录下,生成一个.spec文件,该文件会告诉pyinstaller如何处理你的所有脚本,同时包含了命令选项。一般我们不用去理会这个文件,若需要打包数据文件,或者给打包的二进制增加一些Python的运行时选项时...一些高级打包选项时,需要手动编辑.spec文件。可以使用:
pyi-makespecoptionsscript[script...]
创建一个.spec文件,对于手动编辑的.spec文件,我们可以使用下面任意一条命令:
pyinstallerspecfile
pyi-buildspecfile
Note:可能生成的exe双击后闪退
可以在cmd下打开查看,在cmd打开时候不用加.exe,直接输入名称即可运行。
Tips:实践问题
pyinstaller打包后的exe运行怎么去掉弹出的命令行提示窗口?
1.如果使用.spec文件的话,在该文件中找到console=True修改为console=False
2.如果是直接指定python文件进行pyinstaller打包的话,需要添加—noconsole
pyinstallerpath\mycode.py--noconsole
如果想只打包成一个exe:
pyinstaller-Fpath\mycode.py--noconsole
或:
pyinstaller-F-wpath\mycode.py
更换最终exe生成路径
在cmd中,一开始就要cdD:PythonEXE切换到输出文件夹,然后在用上面的代码,说明:各个参数的作用,
例子:pyinstaller-F-w-pD: mpcore-pythonlibs-id: mpmain.i