Python 打包是根据当前系统环境的,Windows 下是打包出 exe 可执行程序,Linux 下打包出 ELF 格式的二进制文件,不支持跨平台打包
安装
通过 pip 安装
pip install pyinstaller
打包为单文件
使用参数 --onefile
pyinstaller --onefile main.py
常用参数
对于 Windows 程序的打包,常用参数有
--windowed
: 不显示终端窗口 (如果是自己实现 GUI 的话)--icon=icon.ico
: 为程序添加图标--hidden-import
: 显示指定需要的依赖包 (避免自动分析遗漏)--add-data
: 添加额外的资源文件到打包中--debug
: 启用调试信息
打包为多文件
打包为多文件时,使用 --onedir
参数
pyinstaller --onedir main.dy
依赖文件会放在 _internal
文件夹下,非常不友好
仅 pyinstaller 6.1.0 以上版本可以使用该参数
pyinstaller --contents-directory . .\main.py
这样打包的依赖和入口就在一个目录
打包配置项
假设现在工程的配置放在 project/conf/settings.json
打包时想把这个文件也包含,首先打包为多文件
pyinstaller --name my_program --contents-directory . .\main.py
会在当前目录生成 my_program.spec
文件,修改 a
的 data
,以元组的方式将想打包的文件输入,如
datas=[('conf/settings.json', 'conf/')],
然后删除 dist/
文件夹下所有文件后运行命令 (不删除也行,后面问题同意即可)
pyinstaller my_program.spec
项目
通过这种方法,把
https://blog.yexca.net/archives/211
的软件现在已经打包为可执行程序了 (虽然还是没做错误处理)