把Python程序转为可执行的EXE文件,之前已经介绍过,像py2exe,bbfreeze。以我自己使用的经历来看,这两款都还不错,比较适合简单的Python程序,如果你加载的第三方类库比较多的话,不仅体积大,而且可能打包之后还是无法执行。而且有的打包之后,执行时不是单个窗口,有一个类似Console的黑框框(听说可以取消,但不知道如何配置)。之前写过一个画宝宝身高和体重趋势的Python程序,一直想把它打包,但无奈,这两款软件都没能成功。
今天搜索一番,发现还有一个工具,当然不止一个啦,StackOverFlow里面讨论中,比较推荐PyInstaller, 而且让我意外的是,PyInstaller本身并不属于Python包,所以你无须把它放在site-packages文件夹内。安装过程也比较简单:
1. 你从官网下载之后,解压到某个目录,比如C:\ItDevelop\pyinstaller15
2. Pyinstaller不需要安装,但是需要进行一个配置,配置信息跟当前系统有关,配置结果保存在config.dat文件内,所以如果你更换python版本,需要重新执行这个配置命令:
python Configure.py
要能够在正确执行这个命令,你首先必须配置环境变量:把python的安装路径添加到path变量中。然后cmd到pyinstaller的根目录。
C:\ItDevelop\pyinstaller15>python Configure.py
ERROR: Python 2.6+ on Windows support needs pywin32
Please install http://sourceforge.net/projects/pywin32/C:\ItDevelop\pyinstaller15>python Configure.py
I: computing EXE_dependencies
I: Finding TCL/TK…
W: library coredll.dll required via ctypes not found
I: Analyzing C:\ItDevelop\python27\DLLs\_tkinter.pyd
I: Adding tcl85.dll dependency of _tkinter.pydI: … resource update available
I: Testing for Unicode support…
I: … Unicode available
I: testing for UPX…
I: …UPX unavailable
I: computing PYZ dependencies…
I: done generating config.dat
如果配置过程中提示你需要安装pywin32,那么代表你之前没有安装它,下载安装完即可。结果提示保存在config.dat文件中。其中config.dat文件存放在pyinstaller的根目录。
3. 创建spec文件:
C:\ItDevelop\pyinstaller15>makespec.py -F -w --icon=D:\BabyWandH\src\faviconw.ico D:\BabyWandH\src\BabyWandH.py
icon是你喜欢的图标文件,py为你要打包的程序。执行完毕之后,在pyinstaller安装路径下会自动生成一个和py文件的文件名相同的文件夹,文件夹内有spec文件。本例子中C:\ItDevelop\pyinstaller15\BabyWandH\BabyWandH.spec。
4. 最后开始build生成exe文件,首先把上一步生成的spec文件,拷贝到与你py源文件的相同目录下D:\BabyWandH\src\,然后执行:
C:\ItDevelop\pyinstaller15>build.py D:\BabyWandH\src\BabyWandH.spec
在D:\BabyWandH\src\dist目录下就已经生成了你所需要的exe文件。