將圖形可視化工具的 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
繁體地址,請注明出處:http://hk.pswp.cn/diannao/85807.shtml
英文地址,請注明出處:http://en.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體檢報告解讀、病例小結或者…