在使用python开发一些小工具时,如果其他人电脑中没有python环境或者没有安装相应的第三方库,是没办法运行的,而要求对方安装又不现实,尤其是对方不是技术人员,因此如何将一个独立的python程序,使它成为成为一个不用考虑环境,双击即可运行的桌面应用呢?使用pyinstaller打包是一个不错的选择。
pyinstaller是一个支持跨平台使用的第三方库,它可以将脚本执行所需的模块和库,自动分析、收集并生成一个文件夹或者可执行文件。
以下示例使用windows环境,由于pyinstaller的跨平台性,与类unix环境命令一样,只是最终生成的可执行文件不一样。
安装pyinstaller模块与安装其他python模块一样,使用pip命令安装即可。
pip install pyinstaller
安装输出结果:
其中的 altgraph、future等代表 PyInstaller 模块依赖环境。
pyinstaller + 选项 + python入口源文件
主要选项包括:
4.2.1 打包成单个文件
使用以下命令将会使python脚本,打包成为一个exe文件。
pyinstaller -F -w -i “./dian_128.ico” start_dian.py
其中:
执行成功后,将会在根目录生成两个文件夹,其中“build”文件中包含的是所有依赖文件,“dist”文件夹中存放着本次生成的exe文件。
4.2.2 打包成文件夹
使用以下命令将会使python脚本,打包成为一个文件夹。
pyinstaller -D -w -i “./dian_128.ico” start_dian.py
其中:
命令行执行成功后,将会在dist目录下生成一个start_dian的子目录,该目录中包含了大量的.dll文件和.pyz文件,都是exe文件的支撑文件。
上面讲解的都是通用版本,不太灵活,如果想要加入新的资源,或每次编译不想输入很长的命令,可以使用.spec文件,进行定制化配置编译。
4.3.1 生成.spec文件
使用上面的方式进行编译后,如未指定.spec生成目录,会在当前根目录生成一个与编译py文件同名的.spec文件;
或使用命令pyi-makespec -F start_dian.py,将会直接生成.spec文件;
4.3.2 spec文件内容介绍
打开spec文件
这里仅对涉及到的几个关键变量进行解释:
1.Analysis:
2.EXE:
4.3.3 spec文件编译
配置好的spec文件,执行命令进行编译,不再需要其他参数:
pyinstaller start_dian.spec
4.3.4 以下四种情况,修改spec文件比较好:
1.多文件如何打包
2.exe文件过大
3.出现莫名其妙的错误
4.打包成一个文件夹后,发送给其他人无法使用
5.运行exe文件后,没有达到预期效果
6.python脚本主要是命令行输出,但是程序执行完后就退出无法查看输出信息
作者:京东物流 骆铜磊
来源:京东云开发者社区 自猿其说Tech