使用PyInstaller将Python脚本打包为EXE可执行文件指南
本文详细介绍如何使用PyInstaller将Python代码打包为Windows或Linux下的EXE可执行文件。内容涵盖PyInstaller与UPX的安装配置、环境检测、Spec文件生成及最终打包步骤,帮助开发者快速生成独立运行的程序。
1、安装PyInstaller
PyInstaller的主要功能如标题所示,首先需下载PyInstaller及UPX工具,其中UPX用于压缩生成的EXE文件。请访问相关超链接进行下载,当前稳定版本为1.3,请根据所用操作系统选择对应版本。以Windows系统为例,将解压得到的upx.exe文件放置于PyInstaller解压后的文件夹内。假设PyInstaller所在目录为D:\PyInstaller,后续操作均以此路径为例。在命令行中进入D:\PyInstaller目录,运行Configure.py脚本,预期应看到如下输出信息:
I: computing EXE_dependencies I: Finding TCL/TK... I: found TCL/TK version 8.5 I: testing for Zlib... I: ... Zlib available I: Testing for ability to set icons, version resources... I: ... resource update available I: Testing for Unicode support... I: ... Unicode available I: testing for UPX... I: ...UPX available I: computing PYZ dependencies...
运行结果中不应出现以E(Error)开头的错误信息,最好也不要有W(Warning)开头的警告信息。若提示找不到某个dll文件,可尝试将该dll文件复制到C:\Windows\system32目录下,通常即可解决该问题。
Linux用户还需编译Runtime Executables,而Windows用户无需执行此步骤。主要操作是运行Make.py脚本,该脚本会在PyInstaller\support\load\目录下生成run和run_d两个文件,具体细节请参考PyInstaller\doc\Manual.html中的说明。
2、编写Python程序
为了进行测试实验,编写一个HelloWorld.py脚本,假设该文件保存在C:\HelloWorld.py路径下。
#!/usr/bin/env python
print 'Hello,World!'
words = raw_input('What do you want to say? ')
print 'you said:'+words
3、创建Spec文件
Spec文件用于告知PyInstaller需要编译的Python文件及相关参数。通过执行“Makespec.py + 参数 + Python代码路径”即可生成,主要参数如下(详细用法详见PyInstaller\doc\Manual.html):
-F, --onefile 将Python代码打包为单个文件 -D, --onedir 将Python代码打包为一个目录(默认选项) -K, --tk 包含TCL/TK支持 -d, --debug 生成调试模式的EXE文件 -w, --windowed, --noconsole 生成窗口模式EXE文件(仅限Windows) -c, --nowindowed, --console 生成控制台模式EXE文件(仅限Windows) -X, --upx 使用UPX压缩EXE文件 -o DIR, --out=DIR 指定Spec文件输出的目录,默认位于PyInstaller同级目录 --icon=<FILE.ICO> 添加图标文件(仅限Windows) -v FILE, --version=FILE 添加版本信息文件
针对上述HelloWorld.py,具体执行以下命令:
Makespec.py --onefile --console --upx --tk -o C:\ C:\HelloWorld.py
执行上述命令后,C:\目录下会生成HelloWorld.spec文件。
4、构建Spec文件,生成EXE文件
执行以下命令:
Build.py C:\HelloWorld.spec
经过一段较长的输出信息后,你可以在C:\目录下找到HelloWorld.exe文件,这就是最终生成的可执行文件。其体积约为2.7M,这是因为该HelloWorld程序属于“杀鸡用牛刀”的情况。此外,其他生成的文件均为中间过程文件,可以安全删除。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













