Python 图形可视化脚本打包为 Windows 应用程序实战教程

        前文我们已经写了一个基于python的tkinter库和matplotlib库的图形可视化工具

        基于Python的tkinter库的图形可视化工具(15种图形的完整代码):基于Python的tkinter库的图形可视化工具(15种图形的完整代码)-CSDN博客

        在前文基础上,为了更好管理,以及便于生成exe,现将所有文件都存放桌面的GraphVisualizerApp文件夹中。

一、PyInstaller 打包 Python程序步骤

        要将图形可视化工具打包为 Windows 可安装应用程序并添加桌面图标,我们可以使用 PyInstaller 和 NSIS (Nullsoft Scriptable Install System) 来完成这个任务。以下是详细步骤:

(一)使用 PyInstaller 打包 Python 脚本

首先需要安装 PyInstaller 并生成单个可执行文件:

# 安装 PyInstaller
pip install pyinstaller

# 切换到脚本所在目录
cd /path/to/your/script
# 如,我当前的脚本文件是放在桌面上,则:
cd Desktop/GraphVisualizerApp

# 打包脚本 (替换为你的脚本名,当前脚本名是graphVisualizerApp)
pyinstaller --onefile --windowed --icon=app.ico GraphVisualizerApp.py

参数说明:

  • --onefile:将所有依赖打包成单个可执行文件
  • --windowed:不显示命令行窗口
  • --icon=app.ico:指定应用程序图标(需准备一个 .ico 格式图标文件)
  • 打包需要时间,直到出现以下结果,说明已经打包成功:

            PyInstaller 默认将 exe 生成到 dist 目录,查看dist目录下,是否已经存在了graphvisualizerapp.exe文件,有就说明成功了,没有exe文件,可以重新打包试一下。

    (二)准备应用程序图标

    1.准备一张高质量的 PNG 图片(建议尺寸 256×256)

    2.使用在线工具将 PNG 转换为 ICO 格式,例如:

            可以直接将转换好的ico文件下载。

    3.将生成的 app.ico 文件放在脚本同一目录下

    同时,也看到前面打包成功后,文件夹中多出了多个文件。

    (三)使用 NSIS 创建安装程序

    NSIS 是一个免费的工具,用于创建 Windows 安装程序。按照以下步骤操作:

    1.下载并安装 NSIS

  • 从 NSIS 官网 下载并安装
  • 2.创建 NSIS 脚本

  • 在脚本目录创建一个名为 installer.nsi 的文件,内容如下:
  •         可以先创建一个txt文件,将代码放进去之后,再改后缀名。

    ; 图形可视化工具安装程序
    Name "图形可视化工具"
    OutFile "图形可视化工具安装程序.exe"
    InstallDir "$PROGRAMFILES\图形可视化工具"
    RequestExecutionLevel admin
    
    ; 安装界面设置
    !define MUI_ABORTWARNING
    !include "MUI2.nsh"
    
    ; 页面定义
    !define MUI_STARTMENU_APPSPATH "图形可视化工具"  ; 定义开始菜单路径
    
    !insertmacro MUI_PAGE_WELCOME
    !insertmacro MUI_PAGE_DIRECTORY
    !insertmacro MUI_PAGE_INSTFILES
    !insertmacro MUI_PAGE_FINISH
    
    ; 语言设置
    !insertmacro MUI_LANGUAGE "English"  ; 确保语言文件存在
    
    ; 安装文件
    Section "MainSection"
        SetOutPath $INSTDIR
        File /r "dist\*"
        
        ; 创建桌面图标
        CreateShortCut "$DESKTOP\图形可视化工具.lnk" "$INSTDIR\GraphVisualizerApp.exe"
        CreateShortCut "$SMPROGRAMS\图形可视化工具\图形可视化工具.lnk" "$INSTDIR\GraphVisualizerApp.exe"
        
        ; 创建卸载快捷方式
        CreateShortCut "$SMPROGRAMS\图形可视化工具\卸载.lnk" "$INSTDIR\uninstall.exe"
    
        ; 关键步骤:生成卸载程序
        WriteUninstaller "$INSTDIR\uninstall.exe"  ; 指定卸载程序路径
    SectionEnd
    
    ; 卸载部分
    Section "Uninstall"
        Delete "$DESKTOP\图形可视化工具.lnk"
        Delete "$SMPROGRAMS\图形可视化工具\卸载.lnk"
        Delete "$SMPROGRAMS\图形可视化工具\图形可视化工具.lnk"
        RMDir "$SMPROGRAMS\图形可视化工具"
        Delete "$INSTDIR\GraphVisualizerApp.exe"
        RMDir /r "$INSTDIR"
    SectionEnd
    

            由于前面已经安装了NSIS,所以改了后缀名之后,文件会被自动识别。

            这里有个需要注意的地方,NSIS 默认使用 ANSI 编码(Windows 系统的默认编码),而txt包含中文注释且使用了 UTF-8 编码,之后会导致解析失败。所以这时,需要右键install.nsi–>另存为–>修改编码–>覆盖保存。

     此时的文件目录结构为:

    GraphVisualizerApp/
    ├── GraphVisualizerApp.py       # 主脚本
    ├── GraphVisualizerApp.spec
    ├── app.ico                   # 应用图标
    ├── installer.nsi             # NSIS 安装脚本
    ├── dist/                     # PyInstaller 生成的目录
    │   └── GraphVisualizerApp.exe  # 打包后的可执行文件
    └── build/                    # PyInstaller 临时文件
    

    3.编译 NSIS 脚本

  • 右键点击 installer.nsi 文件,选择 "Compile NSIS Script"
  • 编译完成后,将生成 图形可视化工具安装程序.exe
  • 之后会打开NSIS软件,显示创建安装程序过程。显示如下的绿色背景,说明成功了。

    此时,在GraphVisualizerApp文件夹下出现了“图形可视化工具安装程序.exe”

    (四)测试安装程序

    1. 运行生成的安装程序
    2. 按照安装向导完成安装
    3. 验证:
    4. 桌面是否出现应用程序图标
    5. 开始菜单是否有应用程序入口
    6. 应用程序是否能正常启动并生成图形

    以下是安装步骤:

    安装成功后,桌面上会出现安装图标

    双击打开。

    安装目录下,会有卸载程序。

    卸载程序。

    不过相应的安装文件夹要自己删除!

    二、常见问题及解决方案

    1.缺少依赖库

  • 如果打包后程序运行报错,可能是缺少某些依赖库
  • 可以尝试使用 --hidden-import 参数指定缺失的模块
  • 2.图标不显示

  • 确保 ICO 文件格式正确且尺寸合适
  • 可以尝试使用不同的图标生成工具
  • 3.安装程序体积过大

  • 可以考虑使用 UPX 压缩可执行文件:
  • pyinstaller --onefile --windowed --icon=app.ico --upx-dir=path/to/upx GraphVisualizerApp.py
    

    三、其他问题        

            最开始的时候我是用中文的,但是最后发现不行,所以前文使用的语言是英语。以下仅供参考。具体问题以及解决办法如下:

    这个错误是由于 NSIS 找不到中文语言文件导致的。以下是详细的解决方案:

    (一)错误原因分析

    1. 缺少中文语言文件

    2. NSIS 的 Modern UI 2 插件需要对应的语言文件(.nlf)才能显示中文界面。
    3. 错误信息明确指出找不到 ChineseSimplified.nlf 文件,该文件通常位于 NSIS\Contrib\Language files 目录下。
    4. NSIS 安装不完整

    5. 在安装 NSIS 时,Contrib 组件(包含语言文件和插件)可能未被勾选安装。

    (二)解决方案

    方法 1:手动下载并添加语言文件
    1. 下载中文语言文件

    2. 从 NSIS 官方仓库下载 ChineseSimplified.nlf 文件:
    3. 下载地址:ChineseSimplified.nlf
    4. 或者从其他 NSIS 安装机器的 NSIS\Contrib\Language files 目录复制该文件。
    5. 放置文件到正确路径

    6. 将下载的 ChineseSimplified.nlf 放到以下路径:
      D:\Program Files (x86)\NSIS\Contrib\Language files\
      
    7. 如果没有 Language files 目录,请手动创建。
    方法 2:重新安装 NSIS 并勾选 Contrib 组件
    1. 卸载现有 NSIS

    2. 通过 Windows 控制面板卸载 NSIS。
    3. 重新安装 NSIS

    4. 下载最新版 NSIS(建议 v3.09 或更高):NSIS 下载页
    5. 安装过程中,在 Custom Setup 步骤:
    6. 确保勾选 Contrib 组件(包含插件和语言文件)。
    7. 确认安装路径为 D:\Program Files (x86)\NSIS

    通过这种方式,你可以创建一个专业的 Windows 安装程序,包含桌面图标和完整的卸载功能。

    作者:搏博

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python 图形可视化脚本打包为 Windows 应用程序实战教程

    发表回复