将图形可视化工具的 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 图片(建议尺寸 256x256)

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 $INSTDIRFile /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. 验证:
    • 桌面是否出现应用程序图标
    • 开始菜单是否有应用程序入口
    • 应用程序是否能正常启动并生成图形

以下是安装步骤:

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

双击打开。

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

卸载程序。

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

二、常见问题及解决方案

1.缺少依赖库

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

2.图标不显示

  • 确保 ICO 文件格式正确且尺寸合适
  • 可以尝试使用不同的图标生成工具

3.安装程序体积过大

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

三、其他问题        

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

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

(一)错误原因分析

  1. 缺少中文语言文件

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

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

(二)解决方案

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

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/diannao/85807.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Kotlin】简介变量类接口

【Kotlin】简介&变量&类&接口 【Kotlin】数字&字符串&数组&集合 【Kotlin】高阶函数&Lambda&内联函数 【Kotlin】表达式&关键字 文章目录 Kotlin_简介&变量&类&接口Kotlin的特性Kotlin优势创建Kotlin项目变量变量保存了指向对…

OpenCV种的cv::Mat与Qt种的QImage类型相互转换

一、首先了解cv::Mat结构体 cv::Mat::step与QImage转换有着较大的关系。 step的几个类别区分: step:矩阵第一行元素的字节数step[0]:矩阵第一行元素的字节数step[1]:矩阵中一个元素的字节数step1(0):矩阵中一行有几个通道数step1(1):一个元素有几个通道数(channel()) cv::Ma…

搭建基于VsCode的ESP32的开发环境教程

一、VsCode搜索ESP-IDF插件 根据插件处搜索找到ESP-IDF并安装 安装完成 二、配置安装ESP-IDF 配置IDF 按照如下配置,点击安装 安装完成 三、使用案例程序 创建一个闪光灯的例子程序,演示程序编译下载。 选择blink例子,闪烁LED的程序 选…

企业培训学习考试系统源码 ThinkPHP框架+Uniapp支持多终端适配部署

在数字化转型浪潮下,企业对高效培训与精准考核的需求日益迫切。一套功能完备、多终端适配且易于定制的培训学习考试系统,成为企业提升员工能力、检验培训成果的关键工具。本文给大家分享一款基于 ThinkPHP 框架与 Uniapp 开发的企业培训学习考试系统&…

【PmHub面试篇】PmHub集成Redission分布式锁保障流程状态更新面试专题解析

你好,欢迎来到本次关于PmHub整合TransmittableThreadLocal (TTL)缓存用户数据的面试系列分享。在这篇文章中,我们将深入探讨这一技术领域的相关面试题预测。若想对相关内容有更透彻的理解,强烈推荐参考之前发布的博文:【PmHub后端…

mac 设置cursor (像PyCharm一样展示效果)

一、注册 Cursor - The AI Code Editor 二、配置Python环境 我之前使用pycharm创建的python项目,以及创建了虚拟环境,现在要使用cursor继续开发。 2.1 选择Python 虚拟环境 PyCharm 通常将虚拟环境存储在项目目录下的 venv 或 .venv 文件夹中&#xf…

Spring事务失效-----十大常见场景及解决方案全解析

Spring事务失效的常见场景及原因分析 Spring事务管理是开发中的核心功能,但在实际应用中可能因各种原因导致事务失效。以下是常见的事务失效场景及详细解析: 1. 方法未被Spring管理 场景:使用new关键字直接创建对象,而非通过Spring容器注入原因:Spring事务基于AOP代理,…

刚出炉热乎的。UniApp X 封装 uni.request

HBuilder X v4.66 当前最新版本 由于 uniapp x 使用的是自己包装的 ts 语言 uts。目前语言还没有稳定下来,各种不支持 ts 各种报错各种不兼容问题。我一个个问题调通的,代码如下: 封装方法 // my-app/utils/request.uts const UNI_APP_BASE…

【ArcGIS微课1000例】0148:Geographic Imager6.2使用教程

文章目录 一、Geographic Imager6.2下载安装二、Geographic Imager6.2使用方法1. 打开Geographic Imager2. 导入地理影像3. 导入DEM地形渲染4. 设置地理坐标系统5. 进行地理影像的处理6. 导出地理影像一、Geographic Imager6.2下载安装 在专栏上一篇文章中已经详细讲述了Geogr…

零基础安装 Python 教程:从下载到环境配置一步到位(支持 VSCode 和 PyCharm)与常用操作系统操作指南

零基础安装 Python 教程:从下载到环境配置一步到位(支持 VSCode 和 PyCharm)与常用操作系统操作指南 本文是一篇超详细“Python安装教程”,覆盖Windows、macOS、Linux三大操作系统的Python安装方法与环境配置,包括Pyt…

定时任务的 cron 表达式

定时任务的 cron 表达式 一、什么时 cron 表达式 Cron表达式是一种广泛应用于Linux系统的时间表示格式,常用于定时任务的调度。Cron表达式可以通过指定不同的时间参数,描述一个在 未来某个时间点执行的任务。 二、Cron表达式语法 秒 分 时 日 月 周几…

PHP+mysql 美容美发预约小程序源码 支持DIY装修+完整图文搭建教程

在数字化浪潮席卷的当下,美容美发行业也急需线上转型,以提升客户预约效率与服务体验。开发一款美容美发预约小程序成为众多商家的迫切需求。本文将为大家分享一套基于 PHPMySQL 的美容美发预约小程序源码,功能完备、支持 DIY 装修&#xff0c…

十八、【用户认证篇】安全第一步:基于 JWT 的前后端分离认证方案

【用户认证篇】安全第一步:基于 JWT 的前后端分离认证方案 前言什么是 JWT (JSON Web Token)?准备工作第一部分:后端 Django 配置 JWT 认证1. 安装 `djangorestframework-simplejwt`2. 在 `settings.py` 中配置 `djangorestframework-simplejwt`3. 在项目的 `urls.py` 中添加…

03 Deep learning神经网络的编程基础 代价函数(Cost function)--吴恩达

深度学习中的损失函数(Cost Function)用于量化模型预测与真实数据的差距,是优化神经网络的核心指标。以下是常见类型及数学表达: 核心原理 逻辑回归通过sigmoid函数将线性预测结果转换为概率: y ^ ( i ) \hat{y}^{(i)}

Linux信号捕捉技术深度解析

根据您的需求,文章可以聚焦技术实现与实践的结合,以下提供几个标题方案供选择: 方案一(学术向标题) 《Linux信号捕捉机制全解析:内核态捕获原理、可重入函数实践与SIGCHLD异步处理中的volatile陷阱》 方案…

【大模型部署】mac m1本地部署 ChatGLM3-6B 超详细教程

本人环境:macOS 15.5 (Sonoma) - Apple M1 / 16 G 目标:在 mac m1 16G 上 完全离线 的本地模型目录上,跑通官方 ChatGLM3-6B 目录 背景 & 踩坑记录 准备工作 新建 Conda 环境并安装依赖 关键环境变量 运行 composite_demo 常见报错与…

Redis命令使用

Redis是以键值对进行数据存储的,添加数据和查找数据最常用的2个指令就是set和get。 set:set指令用来添加数据。把key和value存储进去。get:get指令用来查找相应的键所对应的值。根据key来取value。 首先,我们先进入到redis客户端…

Linux打开.img镜像文件

kparkx 可以查看和修改img文件的内容 1.安装kparkx 1.安装 kpartx sudo apt-get update sudo apt-get install kpartx2.使用kpartx映射镜像文件 假设镜像文件名为 example.img ,以下命令会将其分区映射到 dev/mapper/ sudo kpartx -av example.img• -a表示添加…

6.4 计算机网络面试题

HTTP到底是不是无状态的? 无状态即每个请求都是独立的,服务器不会在多个请求间保存关于客户端状态的信息。 HTTP虽然是无状态的,但是可以通过一些机制保存状态,如使用cookies session跟踪用户状态。 携带Cookie的HTTP请求是有状…

基于千帆大模型的AI体检报告解读系统实战:使用OSS与PDFBox实现PDF内容识别

目录 说明 前言 需求 流程说明 表结构说明 整体流程 百度智能云 注册和实名认证 创建应用 费用说明 大模型API说明 集成大模型 设计Prompt 上传体检报告 读取PDF内容 功能实现 智能评测 抽取大模型工具 功能实现 总结 说明 AI体检报告解读、病例小结或者…