From 67b1f55b928092ce9e5921af1d36697e41dd92b5 Mon Sep 17 00:00:00 2001 From: dmy Date: Tue, 6 Jan 2026 08:45:57 +0800 Subject: [PATCH] =?UTF-8?q?build:=20=E4=BC=98=E5=8C=96=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=E6=B5=81=E7=A8=8B,=E6=B7=BB=E5=8A=A0=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=92=8C=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 更新Makefile: 改用nicegui-pack进行打包,添加自动版本号生成 - 添加build.spec和海上风电场集电线路设计优化系统.spec配置文件 - GUI集成版本号显示,支持动态版本管理 - 更新使用说明文档,补充系统概述和修正导出说明 --- Makefile | 23 ++++---- build.spec | 87 +++++++++++++++++++++++++++++ gui.py | 8 ++- 使用说明/使用说明.md | 4 +- 海上风电场集电线路设计优化系统.spec | 38 +++++++++++++ 5 files changed, 148 insertions(+), 12 deletions(-) create mode 100644 build.spec create mode 100644 海上风电场集电线路设计优化系统.spec diff --git a/Makefile b/Makefile index 819226f..007285a 100644 --- a/Makefile +++ b/Makefile @@ -5,27 +5,30 @@ help: @echo "Ϸ糡·Żϵͳ - ű" @echo "" @echo ":" - @echo " make build - ʹ .spec ļɵļ exe " + @echo " make build - ʹ .spec ļɵļ exe (Զ汾)" @echo " make rebuild - ¹" - @echo " make clean - ɵʱļͻ" + @echo " make clean - ɵʱļͻ" @echo " make help - ʾ˰Ϣ" # ɵļexe -# ʹ --clean PyInstaller 棬-y Զ +# ʹ nicegui-pack build: - @echo "ʼ..." - uv run pyinstaller --clean -y "Ϸ糡·Żϵͳ.spec" - @echo "ɣ" - @echo "ִļλ: dist/Ϸ糡·Żϵͳ.exe" + @echo "ɰ汾Ϣ..." + uv run python make_version.py + @echo "ʼ..." + uv run nicegui-pack --onefile --windowed --name "Ϸ糡·Żϵͳ" --add-data "version.py:." gui.py + @echo "ļ..." + @uv run python -c "import os, shutil; from version import VERSION; src='dist/Ϸ糡·Żϵͳ.exe'; dst=f'dist/Ϸ糡·Żϵͳ_{VERSION}.exe'; shutil.move(src, dst); print(f'Ϊ: {dst}')" + @echo "ɣ" -# ɵʱļ +# ɵʱļ clean: @echo "ʱļ..." @uv run python -c "import shutil, pathlib; [shutil.rmtree(p) for p in pathlib.Path('.').rglob('__pycache__')]; shutil.rmtree('build', ignore_errors=True); shutil.rmtree('dist', ignore_errors=True)" @echo "ɣ" + nice: uv run nicegui-pack --onefile --name "Ϸ糡·Żϵͳ" gui.py --onefile --windowed - # ¹ -rebuild: clean build \ No newline at end of file +rebuild: clean build diff --git a/build.spec b/build.spec new file mode 100644 index 0000000..dc92cb4 --- /dev/null +++ b/build.spec @@ -0,0 +1,87 @@ +# -*- mode: python ; coding: utf-8 -*- + +import sys +from PyInstaller.utils.hooks import collect_data_files, collect_submodules + +# 收集所有需要的数据文件 +datas = [] +datas += collect_data_files('matplotlib') +datas += collect_data_files('nicegui') +datas += collect_data_files('networkx') +datas += collect_data_files('scipy') +datas += collect_data_files('sklearn') +datas += collect_data_files('pandas') + +# 收集所有隐藏导入 +hiddenimports = [] +hiddenimports += collect_submodules('matplotlib') +hiddenimports += collect_submodules('nicegui') +hiddenimports += collect_submodules('networkx') +hiddenimports += collect_submodules('scipy') +hiddenimports += collect_submodules('sklearn') +hiddenimports += collect_submodules('pandas') +hiddenimports += collect_submodules('numpy') + +# 添加特定的隐藏导入 +hiddenimports += [ + 'matplotlib.backends.backend_qt5agg', + 'matplotlib.backends.backend_tkagg', + 'matplotlib.backends.backend_agg', + 'matplotlib.backends.backend_svg', + 'PIL._tkinter_finder', + 'openpyxl', + 'ezdxf', + 'scipy.spatial._qhull', + 'scipy.special._cdflib', + 'scipy.linalg.cython_lapack', + 'scipy.linalg.cython_blas', + 'sklearn.utils._cython_blas', + 'sklearn.neighbors._partition_nodes', + 'sklearn.tree._utils', + 'pandas._libs.tslibs.nattype', + 'pandas._libs.tslibs.np_datetime', + 'pandas._libs.skiplist', +] + +block_cipher = None + +a = Analysis( + ['gui.py'], + pathex=[], + binaries=[], + datas=datas, + hiddenimports=hiddenimports, + hookspath=[], + hooksconfig={}, + runtime_hooks=[], + excludes=[], + win_no_prefer_redirects=False, + win_private_assemblies=False, + cipher=block_cipher, + noarchive=False, +) + +pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) + +exe = EXE( + pyz, + a.scripts, + a.binaries, + a.zipfiles, + a.datas, + [], + name='海上风电场集电线路设计优化系统', + debug=False, + bootloader_ignore_signals=False, + strip=False, + upx=True, + upx_exclude=[], + runtime_tmpdir=None, + console=False, + disable_windowed_traceback=False, + argv_emulation=False, + target_arch=None, + codesign_identity=None, + entitlements_file=None, + icon=None, +) \ No newline at end of file diff --git a/gui.py b/gui.py index 3e51f18..7834cb2 100644 --- a/gui.py +++ b/gui.py @@ -16,6 +16,12 @@ from main import ( ) import pandas as pd +# 尝试导入自动生成的版本号 +try: + from version import VERSION +except ImportError: + VERSION = "v1.0" + # 设置matplotlib支持中文显示 plt.rcParams["font.sans-serif"] = ["Microsoft YaHei", "SimHei", "Arial"] plt.rcParams["axes.unicode_minus"] = False @@ -834,7 +840,7 @@ def index(): "bg-primary text-white p-4 shadow-lg items-center no-wrap" ): with ui.column().classes("gap-0"): - ui.label("海上风电场集电线路设计优化系统 v1.0").classes( + ui.label(f"海上风电场集电线路设计优化系统 {VERSION}").classes( "text-2xl font-bold" ) with ui.column().classes("gap-0"): diff --git a/使用说明/使用说明.md b/使用说明/使用说明.md index 5469583..1552242 100644 --- a/使用说明/使用说明.md +++ b/使用说明/使用说明.md @@ -8,6 +8,8 @@ ## 1. 软件概述 +海上风电集电线路作为风电机组与海上升压站的关键连接纽带,其优化设计对提升风电场全生命周期经济性及降低环境影响具有核心意义,不仅能通过拓扑与路由优化减少建设运维成本、降低线路损耗,还能为深远海、大容量风电场开发提供技术支撑。该优化工作面临拓扑与载流量多约束耦合的技术瓶颈,需综合运用数字化技术、先进优化算法进行应对。 + 本软件专为海上风电场内集电系统(35kV/66kV/110kV)设计,旨在通过多种先进的拓扑优化算法(如Esau-Williams、MST、旋转扫描法),辅助电气工程师快速完成集电线路的路径规划与经济性比选。 软件能够根据风机坐标、海缆载流量及造价数据,自动计算并生成线损最小、投资最优的接线方案,并支持一键导出 CAD 图纸和海缆长度。 @@ -141,7 +143,7 @@ ### 5.2 导出 Excel 报告 点击 **“下载 Excel 对比表”**,将生成一份包含详细工程数据的 Excel 文件,内容包括: * **Summary**: 所有方案的经济技术指标汇总。 -* **Details**: 推荐方案的每一条海缆连接明细(起点、终点、长度、型号、负载率)。 +* **Details**: 推荐方案的每一条海缆连接明细(起点、终点、长度、型号)。 ### 5.3 批量归档 点击 **“导出全部方案 DXF (ZIP)”**,可将所有计算产生的方案图纸和报表打包下载,便于项目归档。 diff --git a/海上风电场集电线路设计优化系统.spec b/海上风电场集电线路设计优化系统.spec new file mode 100644 index 0000000..241199f --- /dev/null +++ b/海上风电场集电线路设计优化系统.spec @@ -0,0 +1,38 @@ +# -*- mode: python ; coding: utf-8 -*- + + +a = Analysis( + ['gui.py'], + pathex=[], + binaries=[], + datas=[('D:\\code\\windfarm\\.venv\\Lib\\site-packages\\nicegui', 'nicegui'), ('version.py', '.')], + hiddenimports=[], + hookspath=[], + hooksconfig={}, + runtime_hooks=[], + excludes=[], + noarchive=False, + optimize=0, +) +pyz = PYZ(a.pure) + +exe = EXE( + pyz, + a.scripts, + a.binaries, + a.datas, + [], + name='海上风电场集电线路设计优化系统', + debug=False, + bootloader_ignore_signals=False, + strip=False, + upx=True, + upx_exclude=[], + runtime_tmpdir=None, + console=False, + disable_windowed_traceback=False, + argv_emulation=False, + target_arch=None, + codesign_identity=None, + entitlements_file=None, +)