build: 优化构建流程,添加版本管理和更新文档

- 更新Makefile: 改用nicegui-pack进行打包,添加自动版本号生成
- 添加build.spec和海上风电场集电线路设计优化系统.spec配置文件
- GUI集成版本号显示,支持动态版本管理
- 更新使用说明文档,补充系统概述和修正导出说明
This commit is contained in:
dmy
2026-01-06 08:45:57 +08:00
parent b924f75add
commit 67b1f55b92
5 changed files with 148 additions and 12 deletions

View File

@@ -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

87
build.spec Normal file
View File

@@ -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,
)

8
gui.py
View File

@@ -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"):

View File

@@ -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)”**,可将所有计算产生的方案图纸和报表打包下载,便于项目归档。

View File

@@ -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,
)