返回
详解PyInstaller静态打包,告别依赖困扰
闲谈
2023-12-01 22:09:24
前言
PyInstaller是一款强大的跨平台应用程序打包工具,可以让Python程序变成一个独立可执行文件。然而,在打包过程中,常常会遇到静态依赖文件丢失的问题,导致程序无法正常运行。本教程将详细介绍两种解决方法,手把手教你打包带有静态依赖文件的Python程序。
方法一:通过命令行参数
1. 准备工作
确保已安装PyInstaller。
2. 确定依赖文件
运行以下命令,生成依赖文件列表:
pyi-makespec --include-dependencies --paths <路径> --name <可执行文件名> --out <spec文件>
3. 打包
在命令行中运行以下命令:
pyinstaller --paths <路径> --name <可执行文件名> --onefile --add-data <依赖文件1>;<依赖文件2>;<...>;> --icon <图标文件>
其中:
<路径>
:包含程序和依赖文件的路径<可执行文件名>
:要生成的独立可执行文件名<依赖文件1>;<依赖文件2>;<...>
:通过上一步生成的依赖文件列表<图标文件>
:程序图标文件(可选)
方法二:通过修改spec打包配置脚本文件
1. 准备工作
创建一个名为<可执行文件名>.spec
的文本文件。
2. 编写spec文件
在spec文件中添加以下内容:
a = Analysis(['<程序文件>'],
pathex=['<路径>'],
binaries=[('<依赖文件1>', '<依赖文件路径1>'), ('<依赖文件2>', '<依赖文件路径2>'), ...],
datas=[('<依赖文件1>', '<依赖文件路径1>'), ('<依赖文件2>', '<依赖文件路径2>'), ...])
pyz = PYZ(a.pure)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas)
其中:
<程序文件>
:程序的主文件<路径>
:包含程序和依赖文件的路径<依赖文件1>
、<依赖文件2>
:要打包的依赖文件<依赖文件路径1>
、<依赖文件路径2>
:依赖文件的路径
3. 打包
使用以下命令打包:
pyinstaller <可执行文件名>.spec
示例
方法一:
pyi-makespec --include-dependencies --paths C:\MyProject --name MyProgram --out MyProgram.spec
pyinstaller --paths C:\MyProject --name MyProgram --onefile --add-data C:\MyProject\lib\image.png;C:\MyProject\data\data.json --icon C:\MyProject\icon.ico
方法二:
创建MyProgram.spec文件,内容如下:
a = Analysis(['C:\MyProject\main.py'],
pathex=['C:\MyProject'],
binaries=[('image.png', 'C:\MyProject\lib\image.png'), ('data.json', 'C:\MyProject\data\data.json')],
datas=[('image.png', 'C:\MyProject\lib\image.png'), ('data.json', 'C:\MyProject\data\data.json')])
pyz = PYZ(a.pure)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas)
然后使用命令打包:
pyinstaller MyProgram.spec
总结
通过本文介绍的两种方法,你可以轻松打包带有静态依赖文件的Python程序,无需再担心依赖文件丢失的问题。根据你的具体需求,选择适合自己的方法,高效完成打包任务。