上传文件至 /
第一次提交 Signed-off-by: hujinyang <hujinyang@pw.com>
This commit is contained in:
parent
47cd5d5151
commit
7391a4b29b
208
README.md
Normal file
208
README.md
Normal file
@ -0,0 +1,208 @@
|
|||||||
|
Config Editor - 配置文件编辑工具
|
||||||
|
一个基于PyQt6开发的Python配置文件可视化编辑工具,支持自动解析Python配置文件中的大写变量,提供直观的GUI界面进行编辑和管理。
|
||||||
|
|
||||||
|
✨ 特性功能
|
||||||
|
🎯 核心功能
|
||||||
|
智能解析:自动扫描Python文件,识别文件中的变量配置项
|
||||||
|
|
||||||
|
可视化编辑:基于PyQt6的现代化GUI界面,支持多种数据类型编辑
|
||||||
|
|
||||||
|
分组管理:可自定义分组,按类别组织配置项
|
||||||
|
|
||||||
|
格式保持:保存时保持原始文件格式、注释和缩进
|
||||||
|
|
||||||
|
🔧 编辑支持
|
||||||
|
多种数据类型:
|
||||||
|
|
||||||
|
布尔值(CheckBox)
|
||||||
|
|
||||||
|
整数/浮点数(SpinBox)
|
||||||
|
|
||||||
|
字符串(LineEdit/TextEdit)
|
||||||
|
|
||||||
|
JSON/字典/列表(格式化编辑)
|
||||||
|
|
||||||
|
校验规则:
|
||||||
|
|
||||||
|
必填项验证
|
||||||
|
|
||||||
|
数值范围限制
|
||||||
|
|
||||||
|
正则表达式匹配
|
||||||
|
|
||||||
|
自定义错误提示
|
||||||
|
|
||||||
|
📊 管理功能
|
||||||
|
显示定制:自定义每个配置项的显示名称和提示信息
|
||||||
|
|
||||||
|
字段隐藏:标记隐藏字段,支持显示/隐藏切换
|
||||||
|
|
||||||
|
类型推断:自动识别字段类型,支持手动覆盖
|
||||||
|
|
||||||
|
规则管理:独立的规则管理界面,支持批量配置
|
||||||
|
|
||||||
|
🚀 快速开始
|
||||||
|
环境要求
|
||||||
|
Python 3.8+
|
||||||
|
|
||||||
|
PyQt6
|
||||||
|
|
||||||
|
构建打包
|
||||||
|
执行build.sh脚本
|
||||||
|
|
||||||
|
安装部署
|
||||||
|
bash
|
||||||
|
1.sudo dpkg -i config-editor_1.0_amd64.deb
|
||||||
|
2.sudo /usr/share/config-editor/setup_venv.sh
|
||||||
|
在服务器图形化界面,搜索Config Editor点击即可使用
|
||||||
|
卸载程序
|
||||||
|
bash
|
||||||
|
1.sudo dpkg -r config-editor
|
||||||
|
📁 项目结构
|
||||||
|
text
|
||||||
|
config_editor/
|
||||||
|
├── config_editor.py # 主程序
|
||||||
|
├── config_editor_rules.json # 规则配置文件
|
||||||
|
├── config_editor_settings.json # 用户设置文件
|
||||||
|
├── build.sh # 一键打包脚本
|
||||||
|
├── CHANGELOG.md # 变更日志
|
||||||
|
└── README.md # 说明文档
|
||||||
|
配置文件说明
|
||||||
|
config_editor_rules.json:存储所有配置项的元数据(分组、显示名、校验规则等)
|
||||||
|
|
||||||
|
config_editor_settings.json:存储用户设置(最近使用的配置文件路径等)
|
||||||
|
|
||||||
|
🖥️ 使用指南
|
||||||
|
1. 首次运行
|
||||||
|
首次启动程序时,会自动弹出配置文件设置对话框:
|
||||||
|
|
||||||
|
选择要编辑的Python配置文件
|
||||||
|
|
||||||
|
程序会自动解析配置文件中的大写变量
|
||||||
|
|
||||||
|
2. 界面布局
|
||||||
|
顶部信息栏:显示当前配置文件的路径
|
||||||
|
|
||||||
|
标签页:按分组显示配置项
|
||||||
|
|
||||||
|
编辑区域:每个配置项包含:
|
||||||
|
|
||||||
|
显示名称(可自定义)
|
||||||
|
|
||||||
|
编辑控件(根据类型自动适配)
|
||||||
|
|
||||||
|
变量名(原始名称)
|
||||||
|
|
||||||
|
工具栏:常用操作按钮
|
||||||
|
|
||||||
|
3. 基本操作
|
||||||
|
打开文件:使用菜单或按钮打开其他配置文件
|
||||||
|
|
||||||
|
编辑配置:直接在对应的控件中修改值
|
||||||
|
|
||||||
|
保存配置:保存修改到原配置文件
|
||||||
|
|
||||||
|
重新加载:放弃修改,重新读取配置文件
|
||||||
|
|
||||||
|
4. 高级功能
|
||||||
|
规则管理
|
||||||
|
点击"管理规则"按钮进入规则管理界面:
|
||||||
|
|
||||||
|
字段属性:设置显示名称、分组、类型、提示信息等
|
||||||
|
|
||||||
|
校验规则:设置最小值、最大值、正则表达式、必填项
|
||||||
|
|
||||||
|
分组管理:添加、删除分组,调整字段分组
|
||||||
|
|
||||||
|
字段筛选
|
||||||
|
搜索功能:快速查找配置项
|
||||||
|
|
||||||
|
隐藏字段:支持显示/隐藏被标记为隐藏的配置项
|
||||||
|
|
||||||
|
⚙️ 配置规则详解
|
||||||
|
分组配置
|
||||||
|
json
|
||||||
|
"categories": {
|
||||||
|
"数据库配置": ["DB_HOST", "DB_PORT"],
|
||||||
|
"应用配置": ["DEBUG_MODE", "LOG_LEVEL"]
|
||||||
|
}
|
||||||
|
字段属性
|
||||||
|
json
|
||||||
|
"display_names": {
|
||||||
|
"DB_HOST": "数据库主机地址"
|
||||||
|
},
|
||||||
|
"field_types": {
|
||||||
|
"DB_PORT": "int"
|
||||||
|
},
|
||||||
|
"tooltips": {
|
||||||
|
"DB_HOST": "请输入数据库服务器的IP地址或域名"
|
||||||
|
}
|
||||||
|
校验规则
|
||||||
|
json
|
||||||
|
"validations": {
|
||||||
|
"DB_PORT": {
|
||||||
|
"required": true,
|
||||||
|
"min": "1024",
|
||||||
|
"max": "65535",
|
||||||
|
"regex": "^[0-9]+$"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
🎨 支持的Python配置文件格式
|
||||||
|
程序可以解析以下格式的配置:
|
||||||
|
|
||||||
|
python
|
||||||
|
# 配置文件示例 config.py
|
||||||
|
DB_HOST = "localhost" # 数据库地址
|
||||||
|
DB_PORT = 3306 # 数据库端口
|
||||||
|
DEBUG_MODE = True # 调试模式
|
||||||
|
MAX_CONNECTIONS = 100 # 最大连接数
|
||||||
|
要求:
|
||||||
|
|
||||||
|
配置变量名必须为大写字母和下划线组成
|
||||||
|
|
||||||
|
支持Python基本数据类型(字符串、数字、布尔值、列表、字典)
|
||||||
|
|
||||||
|
🔍 技术实现
|
||||||
|
解析技术
|
||||||
|
使用Python的ast模块进行语法分析
|
||||||
|
|
||||||
|
精确识别配置项的位置和注释
|
||||||
|
|
||||||
|
保持原始格式和缩进
|
||||||
|
|
||||||
|
GUI框架
|
||||||
|
基于PyQt6构建现代化界面
|
||||||
|
|
||||||
|
响应式布局,支持调整窗口大小
|
||||||
|
|
||||||
|
自定义控件适配不同数据类型
|
||||||
|
|
||||||
|
数据持久化
|
||||||
|
规则配置使用JSON格式存储
|
||||||
|
|
||||||
|
支持相对路径和绝对路径
|
||||||
|
|
||||||
|
自动保存用户设置
|
||||||
|
|
||||||
|
📝 使用示例
|
||||||
|
编辑配置文件
|
||||||
|
启动程序,选择配置文件
|
||||||
|
|
||||||
|
在对应的分组中找到要修改的配置项
|
||||||
|
|
||||||
|
编辑值(复选框、数字框、文本框等)
|
||||||
|
|
||||||
|
点击"保存配置"按钮
|
||||||
|
|
||||||
|
确认变更后,程序会自动更新配置文件
|
||||||
|
|
||||||
|
自定义规则
|
||||||
|
点击"管理规则"按钮
|
||||||
|
|
||||||
|
在左侧列表选择配置项
|
||||||
|
|
||||||
|
在右侧设置显示名称、分组、类型等
|
||||||
|
|
||||||
|
设置校验规则(可选)
|
||||||
|
|
||||||
|
保存规则,程序会自动重新加载界面
|
||||||
320
build.sh
Normal file
320
build.sh
Normal file
@ -0,0 +1,320 @@
|
|||||||
|
# config Editor 一键构建脚本
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# 配置变量
|
||||||
|
PACKAGE_NAME="config-editor"
|
||||||
|
VERSION="1.0"
|
||||||
|
ARCHITECTURE="amd64"
|
||||||
|
MAINTAINER="hjy <hjy@pw.com>"
|
||||||
|
|
||||||
|
echo "=========================================="
|
||||||
|
echo "Config Editor 构建脚本 (虚拟环境版)"
|
||||||
|
echo "版本: $VERSION"
|
||||||
|
echo "架构: $ARCHITECTURE"
|
||||||
|
echo "=========================================="
|
||||||
|
|
||||||
|
# 检查依赖
|
||||||
|
echo "检查构建依赖..."
|
||||||
|
if ! command -v dpkg-deb &> /dev/null; then
|
||||||
|
echo "错误: 需要 dpkg-deb,请安装: sudo apt install dpkg-dev"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 检查源代码是否存在
|
||||||
|
echo "检查源代码..."
|
||||||
|
if [ ! -f "config_editor.py" ]; then
|
||||||
|
echo "错误: 未找到主程序文件 config_editor.py"
|
||||||
|
echo "请确保在项目根目录运行此脚本,且包含 config_editor.py 文件"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 创建构建目录
|
||||||
|
BUILD_DIR="/tmp/${PACKAGE_NAME}-build"
|
||||||
|
echo "创建构建目录: $BUILD_DIR"
|
||||||
|
rm -rf "$BUILD_DIR"
|
||||||
|
mkdir -p "$BUILD_DIR/DEBIAN"
|
||||||
|
mkdir -p "$BUILD_DIR/usr/share/applications"
|
||||||
|
mkdir -p "$BUILD_DIR/usr/share/config-editor"
|
||||||
|
mkdir -p "$BUILD_DIR/usr/bin"
|
||||||
|
|
||||||
|
# 复制应用文件
|
||||||
|
echo "复制应用文件..."
|
||||||
|
echo "复制主程序 config_editor.py"
|
||||||
|
cp config_editor.py "$BUILD_DIR/usr/share/config-editor/"
|
||||||
|
|
||||||
|
# 复制配置文件
|
||||||
|
if [ -f "config_editor_rules.json" ]; then
|
||||||
|
echo "复制配置文件 config_editor_rules.json"
|
||||||
|
cp config_editor_rules.json "$BUILD_DIR/usr/share/config-editor/"
|
||||||
|
else
|
||||||
|
echo "警告: 未找到 config_editor_rules.json 文件"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "config_editor_settings.json" ]; then
|
||||||
|
echo "复制配置文件 config_editor_settings.json"
|
||||||
|
cp config_editor_settings.json "$BUILD_DIR/usr/share/config-editor/"
|
||||||
|
else
|
||||||
|
echo "警告: 未找到 config_editor_settings.json 文件"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 复制所有Python文件
|
||||||
|
echo "复制其他Python文件..."
|
||||||
|
find . -maxdepth 1 -name "*.py" ! -name "build.sh" -exec cp {} "$BUILD_DIR/usr/share/config-editor/" \; 2>/dev/null || true
|
||||||
|
|
||||||
|
# 显示复制的文件
|
||||||
|
echo "已复制的文件:"
|
||||||
|
ls -la "$BUILD_DIR/usr/share/config-editor/"
|
||||||
|
|
||||||
|
# 检查是否复制了真实的应用文件
|
||||||
|
if [ ! -f "$BUILD_DIR/usr/share/config-editor/config_editor.py" ]; then
|
||||||
|
echo "错误: 未成功复制 config_editor.py 文件"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 创建桌面文件
|
||||||
|
echo "创建桌面文件..."
|
||||||
|
cat > "$BUILD_DIR/usr/share/applications/config-editor.desktop" << EOF
|
||||||
|
[Desktop Entry]
|
||||||
|
Version=1.1
|
||||||
|
Type=Application
|
||||||
|
Name=Config Editor
|
||||||
|
Comment=Configuration Management System
|
||||||
|
Exec=config-editor
|
||||||
|
Icon=config-editor
|
||||||
|
Categories=Development;Settings;
|
||||||
|
Terminal=false
|
||||||
|
StartupWMClass=ConfigEditor
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 创建虚拟环境安装脚本(已修复权限问题)
|
||||||
|
echo "创建虚拟环境安装脚本..."
|
||||||
|
cat > "$BUILD_DIR/usr/share/config-editor/setup_venv.sh" << 'EOF'
|
||||||
|
#!/bin/bash
|
||||||
|
# 虚拟环境安装脚本
|
||||||
|
|
||||||
|
APP_DIR="/usr/share/config-editor"
|
||||||
|
VENV_DIR="$APP_DIR/venv"
|
||||||
|
|
||||||
|
echo "设置Config Editor虚拟环境..."
|
||||||
|
|
||||||
|
# 检查是否使用sudo
|
||||||
|
if [ "$EUID" -ne 0 ]; then
|
||||||
|
echo "错误: 请使用sudo运行此脚本"
|
||||||
|
echo "命令: sudo $0"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 检查虚拟环境是否存在
|
||||||
|
if [ ! -d "$VENV_DIR" ]; then
|
||||||
|
echo "创建虚拟环境..."
|
||||||
|
python3 -m venv --system-site-packages "$VENV_DIR"
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "错误: 无法创建虚拟环境"
|
||||||
|
echo "请确保已安装 python3-venv: sudo apt install python3-venv"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 激活虚拟环境并安装依赖
|
||||||
|
echo "激活虚拟环境并安装依赖..."
|
||||||
|
source "$VENV_DIR/bin/activate"
|
||||||
|
|
||||||
|
# 修复权限问题
|
||||||
|
echo "修复虚拟环境权限..."
|
||||||
|
chmod -R 755 "$VENV_DIR"
|
||||||
|
chmod +x "$VENV_DIR/bin"/* 2>/dev/null || true
|
||||||
|
chmod +x "$VENV_DIR/bin/python" 2>/dev/null || true
|
||||||
|
chmod +x "$VENV_DIR/bin/pip" 2>/dev/null || true
|
||||||
|
|
||||||
|
# 升级pip
|
||||||
|
echo "升级pip..."
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
|
||||||
|
# 安装PyQt6
|
||||||
|
echo "安装PyQt6..."
|
||||||
|
pip install PyQt6 -i https://pypi.tuna.tsinghua.edu.cn/simple/
|
||||||
|
|
||||||
|
# 如果有requirements.txt,安装其他依赖
|
||||||
|
if [ -f "$APP_DIR/requirements.txt" ]; then
|
||||||
|
echo "安装其他依赖..."
|
||||||
|
pip install -r "$APP_DIR/requirements.txt" -i https://pypi.tuna.tsinghua.edu.cn/simple/
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 再次确保权限正确
|
||||||
|
echo "设置最终权限..."
|
||||||
|
chmod -R 755 "$VENV_DIR"
|
||||||
|
chmod +x "$VENV_DIR/bin"/* 2>/dev/null || true
|
||||||
|
|
||||||
|
echo "虚拟环境设置完成"
|
||||||
|
echo "安装在虚拟环境中的包:"
|
||||||
|
pip list
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod +x "$BUILD_DIR/usr/share/config-editor/setup_venv.sh"
|
||||||
|
|
||||||
|
# 创建启动脚本 - 使用虚拟环境(已修复权限检查)
|
||||||
|
echo "创建启动脚本..."
|
||||||
|
cat > "$BUILD_DIR/usr/bin/config-editor" << 'EOF'
|
||||||
|
#!/bin/bash
|
||||||
|
# Config Editor 启动脚本 - 虚拟环境版本
|
||||||
|
|
||||||
|
# 应用目录
|
||||||
|
APP_DIR="/usr/share/config-editor"
|
||||||
|
VENV_DIR="$APP_DIR/venv"
|
||||||
|
LOG_FILE="${HOME}/.config/config-editor/log.txt"
|
||||||
|
|
||||||
|
# 创建日志目录
|
||||||
|
mkdir -p "$(dirname "$LOG_FILE")"
|
||||||
|
|
||||||
|
# 记录启动日志
|
||||||
|
echo "$(date): 启动Config Editor" >> "$LOG_FILE"
|
||||||
|
|
||||||
|
# 设置环境变量
|
||||||
|
export DISPLAY=":${XDG_SESSION_DISPLAY:-1}"
|
||||||
|
export XAUTHORITY="${HOME}/.Xauthority"
|
||||||
|
|
||||||
|
# 尝试多种方法设置DBUS
|
||||||
|
if [ -f "/run/user/$(id -u)/bus" ]; then
|
||||||
|
export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$(id -u)/bus"
|
||||||
|
elif [ -n "$DBUS_SESSION_BUS_ADDRESS" ]; then
|
||||||
|
: # 保持已有设置
|
||||||
|
else
|
||||||
|
# 尝试从进程获取
|
||||||
|
DBUS_ADDR=$(ps -u $(id -u) -o command | grep -o 'dbus-daemon.*address=unix:path=[^ ]*' | head -1 | sed 's/.*address=//')
|
||||||
|
if [ -n "$DBUS_ADDR" ]; then
|
||||||
|
export DBUS_SESSION_BUS_ADDRESS="$DBUS_ADDR"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 修复X11权限
|
||||||
|
if [ -f "${HOME}/.Xauthority" ]; then
|
||||||
|
export XAUTHORITY="${HOME}/.Xauthority"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 检查虚拟环境
|
||||||
|
if [ ! -d "$VENV_DIR" ]; then
|
||||||
|
echo "错误: 虚拟环境未找到。请先运行:"
|
||||||
|
echo " sudo /usr/share/config-editor/setup_venv.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 检查并修复权限(如果需要)
|
||||||
|
if [ ! -x "$VENV_DIR/bin/python" ] || [ ! -x "$VENV_DIR/bin/pip" ]; then
|
||||||
|
echo "警告: 虚拟环境权限问题,请重新运行安装脚本:"
|
||||||
|
echo " sudo /usr/share/config-editor/setup_venv.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 检查PyQt6是否安装
|
||||||
|
if ! "$VENV_DIR/bin/python" -c "import PyQt6" 2>/dev/null; then
|
||||||
|
echo "错误: PyQt6未在虚拟环境中安装。请运行:"
|
||||||
|
echo " sudo /usr/share/config-editor/setup_venv.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 切换到应用目录
|
||||||
|
cd "$APP_DIR"
|
||||||
|
|
||||||
|
# 记录环境信息
|
||||||
|
echo "DISPLAY: $DISPLAY" >> "$LOG_FILE"
|
||||||
|
echo "XAUTHORITY: $XAUTHORITY" >> "$LOG_FILE"
|
||||||
|
|
||||||
|
# 使用虚拟环境运行Python应用
|
||||||
|
exec "$VENV_DIR/bin/python" config_editor.py "$@" >> "$LOG_FILE" 2>&1
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod +x "$BUILD_DIR/usr/bin/config-editor"
|
||||||
|
|
||||||
|
# 创建控制文件
|
||||||
|
echo "创建DEBIAN控制文件..."
|
||||||
|
cat > "$BUILD_DIR/DEBIAN/control" << EOF
|
||||||
|
Package: $PACKAGE_NAME
|
||||||
|
Version: $VERSION
|
||||||
|
Architecture: $ARCHITECTURE
|
||||||
|
Depends: python3, python3-venv
|
||||||
|
Recommends: libnotify-bin, x11-xserver-utils
|
||||||
|
Maintainer: $MAINTAINER
|
||||||
|
Description: Configuration Management System (VirtualEnv)
|
||||||
|
A PyQt6-based configuration management editor using virtual environment.
|
||||||
|
Provides grouping management, validation rules, and auto-grouping features.
|
||||||
|
This version uses virtual environment for PyQt6.
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 创建安装后脚本
|
||||||
|
echo "创建安装后脚本..."
|
||||||
|
cat > "$BUILD_DIR/DEBIAN/postinst" << 'EOF'
|
||||||
|
#!/bin/bash
|
||||||
|
# 安装后脚本
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "Config Editor 安装完成!"
|
||||||
|
echo ""
|
||||||
|
echo "更新桌面数据库..."
|
||||||
|
update-desktop-database /usr/share/applications 2>/dev/null || true
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "重要: 需要设置虚拟环境才能运行应用"
|
||||||
|
echo "请执行以下命令完成安装:"
|
||||||
|
echo " sudo /usr/share/config-editor/setup_venv.sh"
|
||||||
|
echo ""
|
||||||
|
echo "使用说明:"
|
||||||
|
echo "1. 设置虚拟环境: sudo /usr/share/config-editor/setup_venv.sh"
|
||||||
|
echo "2. 在终端运行: config-editor"
|
||||||
|
|
||||||
|
# 设置文件权限
|
||||||
|
chmod 755 /usr/bin/config-editor
|
||||||
|
chmod 755 /usr/share/config-editor/setup_venv.sh
|
||||||
|
|
||||||
|
# 设置应用文件权限
|
||||||
|
chmod -R 644 /usr/share/config-editor/* 2>/dev/null || true
|
||||||
|
chmod 755 /usr/share/config-editor/*.py 2>/dev/null || true
|
||||||
|
chmod 755 /usr/share/config-editor/*.sh 2>/dev/null || true
|
||||||
|
|
||||||
|
# 为虚拟环境目录预留权限
|
||||||
|
mkdir -p /usr/share/config-editor/venv 2>/dev/null || true
|
||||||
|
chmod 755 /usr/share/config-editor/venv 2>/dev/null || true
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod +x "$BUILD_DIR/DEBIAN/postinst"
|
||||||
|
|
||||||
|
# 构建deb包
|
||||||
|
echo "构建deb包..."
|
||||||
|
dpkg-deb --build "$BUILD_DIR" "${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
|
||||||
|
|
||||||
|
# 验证包
|
||||||
|
echo "验证deb包..."
|
||||||
|
if dpkg -I "${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb" > /dev/null; then
|
||||||
|
echo "✓ 包验证成功"
|
||||||
|
else
|
||||||
|
echo "✗ 包验证失败"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 清理构建目录
|
||||||
|
echo "清理构建目录..."
|
||||||
|
rm -rf "$BUILD_DIR"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=========================================="
|
||||||
|
echo "构建成功完成!"
|
||||||
|
echo "生成的deb包: ${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
|
||||||
|
echo ""
|
||||||
|
echo "安装步骤:"
|
||||||
|
echo "1. 安装deb包: sudo dpkg -i ${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
|
||||||
|
echo "2. 安装依赖(如有需要): sudo apt install -f"
|
||||||
|
echo "3. 设置虚拟环境: sudo /usr/share/config-editor/setup_venv.sh"
|
||||||
|
echo ""
|
||||||
|
echo "此版本特点:"
|
||||||
|
echo "✓ 修复了虚拟环境权限问题"
|
||||||
|
echo "✓ 使用 --system-site-packages 参数"
|
||||||
|
echo "✓ 自动使用清华PyPI镜像"
|
||||||
|
echo "✓ 简化了依赖和脚本"
|
||||||
|
echo "=========================================="
|
||||||
|
|
||||||
|
# 显示包信息
|
||||||
|
echo ""
|
||||||
|
echo "包信息:"
|
||||||
|
dpkg -I "${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
|
||||||
1686
config_editor.py
Normal file
1686
config_editor.py
Normal file
File diff suppressed because it is too large
Load Diff
131
config_editor_rules.json
Normal file
131
config_editor_rules.json
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
{
|
||||||
|
"categories": {
|
||||||
|
"数据库配置": [
|
||||||
|
"CONNECTION",
|
||||||
|
"REDIS_ADDRESS",
|
||||||
|
"REDIS_PORT",
|
||||||
|
"SYNC_INTERVAL",
|
||||||
|
"REDIS_FIELD_MAPPING"
|
||||||
|
],
|
||||||
|
"PLC控制": [
|
||||||
|
"PLC_ADDRESS",
|
||||||
|
"PLC_PORT",
|
||||||
|
"NH3_LOWER",
|
||||||
|
"NH3_UPPER",
|
||||||
|
"IS_AUTO",
|
||||||
|
"AI_NH3_ADDRESS",
|
||||||
|
"FLOW_FEEDBACK_ADDRESS",
|
||||||
|
"NH3_MANUAL"
|
||||||
|
],
|
||||||
|
"训练参数": [
|
||||||
|
"RESAMPLE_SIZE",
|
||||||
|
"MISSING_VALUE_LENGTH",
|
||||||
|
"MEAN_MASE",
|
||||||
|
"INTERVAL_SIZE_V2",
|
||||||
|
"LAGS",
|
||||||
|
"PREDICT_FH_V2",
|
||||||
|
"TRAIN_DAYS_V2",
|
||||||
|
"THREAD_COUNT",
|
||||||
|
"GPU_RAM_PART",
|
||||||
|
"CNF_PREDICT_NUMBER",
|
||||||
|
"CNF_LAGS",
|
||||||
|
"CNF_LAGS_PC",
|
||||||
|
"CNF_OUTPUT_CHUNK_LENGTH",
|
||||||
|
"CNF_THREAD_COUNT",
|
||||||
|
"CNF_ALARM_LEVEL_1",
|
||||||
|
"CNF_ALARM_LEVEL_2",
|
||||||
|
"CNF_ALARM_LEVEL_3"
|
||||||
|
],
|
||||||
|
"计算参数": [
|
||||||
|
"NH3_LOWER",
|
||||||
|
"NH3_UPPER",
|
||||||
|
"SMOKE_VOLUME",
|
||||||
|
"SMOKE_VOLUME_UPPER",
|
||||||
|
"SMOKE_VOLUME_LOWER",
|
||||||
|
"CONC",
|
||||||
|
"DENSITY",
|
||||||
|
"IS_SOLUTION",
|
||||||
|
"DECLINE_LIMIT",
|
||||||
|
"LOWER_LIMIT_DURATION",
|
||||||
|
"RAISE_LIMIT",
|
||||||
|
"UPPER_LIMIT_DURATION",
|
||||||
|
"PAS_TARGET",
|
||||||
|
"ACTUAL_PAS_TARGET_DIFF_CEMS",
|
||||||
|
"ACTUAL_PAS_TARGET_DIFF_PW",
|
||||||
|
"ACTUAL_PAS_TARGET_CEMS",
|
||||||
|
"ACTUAL_PAS_TARGET_PW",
|
||||||
|
"DYNAMIC_TARGET_UPPER",
|
||||||
|
"DYNAMIC_TARGET_LOWER",
|
||||||
|
"DYNAMIC_TARGET_START_MINUTE",
|
||||||
|
"DYNAMIC_TARGET_END_MINUTE",
|
||||||
|
"NH3_MANUAL"
|
||||||
|
],
|
||||||
|
"控制修正": [
|
||||||
|
"OUT_NH3_TARGET",
|
||||||
|
"OUT_NH3_TARGET_LOWER",
|
||||||
|
"OUT_NH3_TARGET_UPPER",
|
||||||
|
"CORR_PER_LIMIT",
|
||||||
|
"CORR_SLOPE",
|
||||||
|
"AVG_PRIMARY_ADJUST_TIME",
|
||||||
|
"PRIMARY_ADJUST_THRESHOLD",
|
||||||
|
"PRIMARY_ADJUST_INC_MULT",
|
||||||
|
"PRIMARY_ADJUST_DEC_MULT",
|
||||||
|
"CONTROL_METHOD_THRESHOLD",
|
||||||
|
"AVG_CORR_NOX_THRESHOLD",
|
||||||
|
"AVG_SMOKE_ADJUST_TIME",
|
||||||
|
"PRIMARY_ADJUST_SWITCH",
|
||||||
|
"SECONDARY_ADJUST_SWITCH",
|
||||||
|
"AVG_PRED_NOX_ADJUST_TIME",
|
||||||
|
"ADVANCE_TIME",
|
||||||
|
"BLOWBACK_TIME",
|
||||||
|
"EFFICIENCY",
|
||||||
|
"EFFICIENCY_ADJUST_INTERVAL",
|
||||||
|
"EFFICIENCY_ADJUST_ADVANCE_TIME",
|
||||||
|
"AVG_EFFICIENCY_ADJUST_TIME",
|
||||||
|
"EFFICIENCY_ADJUST_THRESHOLD",
|
||||||
|
"EFFICIENCY_ADJUST_UPPER",
|
||||||
|
"EFFICIENCY_ADJUST_LOWER",
|
||||||
|
"CORR_SLOPE_2",
|
||||||
|
"OUT_NH3_ADJUST_SWITCH",
|
||||||
|
"OUT_NH3_ADJUST_THRESHOLD",
|
||||||
|
"OUT_NH3_ADJUST_PCT"
|
||||||
|
],
|
||||||
|
"PID控制": [
|
||||||
|
"PID_VALVE_IS_AUTO",
|
||||||
|
"PID_VALVE_LOWER",
|
||||||
|
"PID_VALVE_UPPER",
|
||||||
|
"PID_VALVE_MANUAL",
|
||||||
|
"PID_VALVE_AUTO_ADDRESS",
|
||||||
|
"PID_VALVE_READ_ADDRESS",
|
||||||
|
"PID_VALVE_MANUAL_ADDRESS",
|
||||||
|
"PID_VALVE_FEEDBACK_ADDRESS"
|
||||||
|
],
|
||||||
|
"MQTT配置": [
|
||||||
|
"MQTT_HOST",
|
||||||
|
"MQTT_PORT",
|
||||||
|
"MQTT_USERNAME",
|
||||||
|
"MQTT_PASSWORD",
|
||||||
|
"MQTT_TOPIC",
|
||||||
|
"MQTT_CLIENT_ID"
|
||||||
|
],
|
||||||
|
"其他配置": [
|
||||||
|
"VALVE_UPPER",
|
||||||
|
"VALVE_LOWER",
|
||||||
|
"MODEL_CHANNEL",
|
||||||
|
"CLEAN_UPPER",
|
||||||
|
"CLEAN_LOWER",
|
||||||
|
"ALARM_WEBHOOK",
|
||||||
|
"ABS_DIFF_THRESHOLD"
|
||||||
|
],
|
||||||
|
"未分类": [
|
||||||
|
"EMERGENCY_ADJUST_INC_MULT",
|
||||||
|
"USED_RAM_LIMIT"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"display_names": {
|
||||||
|
"ABS_DIFF_THRESHOLD": "两个出口NOx绝对值误差阈值"
|
||||||
|
},
|
||||||
|
"tooltips": {},
|
||||||
|
"field_types": {},
|
||||||
|
"hidden": []
|
||||||
|
}
|
||||||
4
config_editor_settings.json
Normal file
4
config_editor_settings.json
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"config_file_path": "",
|
||||||
|
"last_used": ""
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user