影视广告网站,wordpress右侧悬浮插件,公司 网站建,wordpress弹性搜索第42篇 PyInstaller 5.13.2 打包全解析
前言
在上一篇我们系统梳理了 Python 打包工具的历史与对比#xff0c;结论是 PyInstaller 仍是桌面应用和现场部署的首选。本篇将专注于 PyInstaller 5.13.2 ——这是兼顾稳定性与兼容性的版本#xff0c;尤其在 Windows 7 Python 3…第42篇 PyInstaller 5.13.2 打包全解析前言在上一篇我们系统梳理了 Python 打包工具的历史与对比结论是PyInstaller仍是桌面应用和现场部署的首选。本篇将专注于PyInstaller 5.13.2——这是兼顾稳定性与兼容性的版本尤其在 Windows 7 Python 3.7 环境下表现可靠。我们将从安装、打包模式、常用参数到spec 文件的深度解析全面覆盖让你能从入门到精通。一、PyInstaller 简介跨平台支持Windows、Linux、macOS打包方式可生成单文件onefile或单目录onedir可执行程序依赖分析自动检测并收集 Python 模块、DLL、数据文件资源嵌入支持图标、版本信息、额外数据文件社区活跃拥有丰富的钩子hooks能处理复杂依赖库如 PyQt、Tkinter、matplotlib二、安装与环境pipinstallpyinstaller5.13.2推荐在虚拟环境中使用避免依赖冲突兼容 Python 3.7~3.11实测在 Windows 7 上与 Python 3.7.9 完美运行打包后可在 Win7~Win11 全系列系统运行三、打包模式单文件模式–onefile优点分发方便只有一个 exe缺点启动时需解压速度略慢单目录模式默认优点启动快资源可直接修改缺点分发时需整个目录最佳实践开发调试阶段用单目录发布阶段用单文件。四、常用参数--onefile单文件打包--windowed去掉控制台窗口适合 GUI 程序--iconxxx.ico自定义图标--add-data data;data添加数据文件Windows 下用分号分隔--hidden-import解决依赖未自动识别问题--version-file version.txt嵌入版本信息五、spec 文件详解核心部分相比命令行spec 文件提供了更灵活的配置方式适合复杂项目。打包时可直接运行pyinstaller myapp.spec1. 基本结构# -*- mode: python ; coding: utf-8 -*-block_cipherNoneaAnalysis([pelco_tool_v1.py],pathex[],binaries[],datas[],hiddenimports[],hookspath[],hooksconfig{},runtime_hooks[],excludes[],win_no_prefer_redirectsFalse,win_private_assembliesFalse,cipherblock_cipher,noarchiveFalse,)pyzPYZ(a.pure,a.zipped_data,cipherblock_cipher)exeEXE(pyz,a.scripts,a.binaries,a.zipfiles,a.datas,[],namepelco_tool_v1,debugFalse,bootloader_ignore_signalsFalse,stripFalse,upxTrue,upx_exclude[],runtime_tmpdirNone,consoleTrue,disable_windowed_tracebackFalse,argv_emulationFalse,target_archNone,codesign_identityNone,entitlements_fileNone,)2. 各部分说明Analysis负责依赖分析收集脚本、模块、数据文件参数datas用于添加额外资源如配置文件、数据库PYZ将 Python 字节码压缩为一个归档文件EXE定义最终 exe 的属性可指定图标、版本信息、是否带控制台窗口COLLECT收集所有文件生成最终目录或单文件3. 高级用法添加 DLL 或二进制文件binaries[(dlls/mylib.dll,.)]嵌入版本信息versionversion.txt多入口脚本在a Analysis([...])中添加多个 py 文件六、在 PyInstaller 中嵌入版本信息1. 为什么需要版本信息在 Windows 上右键点击 exe → 属性 → 详细信息可以看到版本号、公司名、版权等信息。这些信息有助于区分不同版本的发布包提升专业感避免“未知发布者”提示在企业环境中满足合规要求2. 创建版本信息文件PyInstaller 支持通过文本文件定义版本信息通常命名为version.txt。内容格式类似于 Windows 的资源脚本# UTF-8 # PyInstaller 6.x version.txt 示例 VSVersionInfo( ffiFixedFileInfo( filevers(1, 0, 0, 0), # 文件版本号 prodvers(1, 0, 0, 0), # 产品版本号 mask0x3f, flags0x0, OS0x4, # Windows NT fileType0x1, # 应用程序 subtype0x0, date(0,0) ), kids[ StringFileInfo([ StringTable( 080404b0, # 简体中文 [ StringStruct(uCompanyName, u智码电子), StringStruct(uFileDescription, uPelco-D/P 万能现场维护工具), StringStruct(uFileVersion, u1.0.0.0), StringStruct(uInternalName, upelco_tool_v1), StringStruct(uLegalCopyright, uCopyright © 2025 我送炭你添花), StringStruct(uOriginalFilename, upelco_tool_v1.exe), StringStruct(uProductName, uPelco Tool), StringStruct(uProductVersion, u1.0.0.0) ] ) ]), VarFileInfo([VarStruct(uTranslation, [0x0804, 1200])]) ] )3. 语言设置语言的设置主要通过StringTable的代码页和语言 ID来控制。关键点在于 如何设置语言StringTable(u040904B0, [...])前四位0409表示语言 ID这里是美国英语LCID0x0409。后四位04B0表示代码页这里是 Unicode UTF-16。VarFileInfo([VarStruct(uTranslation, [0x0409, 1200])])第一个值0x0409是语言 ID。第二个值1200是代码页1200 Unicode UTF-16。 常见语言与代码页示例语言LCID (十六进制)代码页简体中文0x0804936(GBK) 或1200(Unicode)繁体中文0x0404950(Big5) 或1200英文 (美国)0x04091252(ANSI Latin I) 或1200日文0x0411932(Shift-JIS) 或12004.在打包命令中使用版本信息pyinstaller --onefile --console --iconkeyboard.ico --version-fileversion.txt pelco_tool_v1.py这样生成的 exe 文件在 Windows 属性中就会显示上述信息。5. 在 spec 文件中嵌入版本信息如果使用.spec文件可以在EXE部分添加# -*- mode: python ; coding: utf-8 -*-block_cipherNoneaAnalysis([pelco_tool_v1.py],pathex[],binaries[],datas[],hiddenimports[],hookspath[],hooksconfig{},runtime_hooks[],excludes[],win_no_prefer_redirectsFalse,win_private_assembliesFalse,cipherblock_cipher,noarchiveFalse,)pyzPYZ(a.pure,a.zipped_data,cipherblock_cipher)exeEXE(pyz,a.scripts,a.binaries,a.zipfiles,a.datas,[],namepelco_tool_v1,debugFalse,bootloader_ignore_signalsFalse,stripFalse,upxTrue,upx_exclude[],runtime_tmpdirNone,consoleTrue,disable_windowed_tracebackFalse,argv_emulationFalse,target_archNone,codesign_identityNone,entitlements_fileNone,versionversion.txt,iconkeyboard.ico,)打包命令pyinstaller --clean --noconfirm pelco_tool_v1.spec6. 解释与最佳实践filevers / prodvers分别表示文件版本和产品版本通常保持一致。CompanyName / ProductName显示在 Windows 属性中建议填写真实公司或项目名。LegalCopyright版权声明避免“未知发布者”。Translation语言与编码1033,1200表示英语 Unicode。中文环境可用2052,1200。最佳实践每次发布新版本时更新FileVersion和ProductVersion。在企业或开源项目中保持版本信息与 changelog 一致。使用 spec 文件集中管理避免命令行参数过长。这样你的PyInstaller 5.13.2 打包专篇就和上一篇形成了呼应前一篇讲工具全景对比这一篇不仅讲 PyInstaller 的打包还深入到版本信息与 spec 文件配置让读者能做出专业级的 exe。七、常见问题与解决启动慢单文件模式需解压建议用单目录或优化依赖缺少 DLL在 spec 文件中添加binaries体积过大排除不必要库或用 UPX 压缩杀毒误报可通过签名、排除压缩解决Win7 兼容性必须使用 Python 3.7 PyInstaller 5.13.2八、最佳实践开发阶段单目录模式方便调试和修改资源发布阶段单文件模式方便分发使用 spec 文件集中管理资源和配置保证可维护性打包后务必在目标环境全面测试九、总结PyInstaller 5.13.2 是目前最稳定的版本之一兼顾兼容性与功能。掌握其命令行参数与spec 文件配置能让你在任何现场快速生成可靠的可执行工具。