修改打包交脚本

This commit is contained in:
yovinchen 2025-07-02 19:43:52 +08:00
parent c0568cc1ec
commit 22b17a1d5d
3 changed files with 443 additions and 0 deletions

138
build_windows.bat Normal file
View File

@ -0,0 +1,138 @@
@echo off
chcp 65001 >nul
echo ================================
echo 座位分配系统 Windows 打包脚本
echo ================================
echo.
:: 检查Python是否安装
python --version >nul 2>&1
if %errorlevel% neq 0 (
echo [错误] Python未安装或不在PATH中
echo 请先安装Python 3.7+
pause
exit /b 1
)
echo [信息] 检查Python版本...
python --version
:: 检查pip是否可用
pip --version >nul 2>&1
if %errorlevel% neq 0 (
echo [错误] pip不可用
pause
exit /b 1
)
:: 安装PyInstaller
echo.
echo [步骤1] 安装PyInstaller...
pip install pyinstaller
:: 检查PyInstaller是否安装成功
pyinstaller --version >nul 2>&1
if %errorlevel% neq 0 (
echo [错误] PyInstaller安装失败
pause
exit /b 1
)
:: 创建build目录
echo.
echo [步骤2] 创建构建目录...
if not exist "build" mkdir build
if not exist "dist" mkdir dist
:: 安装依赖包
echo.
echo [步骤3] 安装依赖包...
pip install pandas numpy openpyxl
:: 打包主程序
echo.
echo [步骤4] 开始打包座位分配系统...
pyinstaller --onefile ^
--console ^
--name "座位分配系统" ^
--icon=icon.ico ^
--add-data "README.md;." ^
--distpath "dist" ^
--workpath "build" ^
--specpath "build" ^
--clean ^
seat_allocation_system.py
:: 检查打包是否成功
if exist "dist\座位分配系统.exe" (
echo.
echo [成功] 打包完成!
echo 可执行文件位置: dist\座位分配系统.exe
:: 创建发布目录
echo.
echo [步骤5] 创建发布包...
if not exist "release" mkdir release
:: 复制可执行文件
copy "dist\座位分配系统.exe" "release\"
:: 创建示例文件夹
if not exist "release\示例文件" mkdir "release\示例文件"
:: 复制示例文件(如果存在)
if exist "人员信息_示例.xlsx" copy "人员信息_示例.xlsx" "release\示例文件\"
if exist "座位信息_示例.xlsx" copy "座位信息_示例.xlsx" "release\示例文件\"
:: 创建使用说明
echo.
echo [步骤6] 创建使用说明...
(
echo 座位分配系统 v2.0
echo ==================
echo.
echo 使用方法:
echo 1. 将人员信息和座位信息的Excel文件放在程序同一目录下
echo 2. 双击运行"座位分配系统.exe"
echo 3. 按照提示操作
echo.
echo 文件要求:
echo - 人员信息文件:包含姓名、证件类型、证件号、手机号、备注等列
echo - 座位信息文件:包含区域、楼层、排号、座位号等列
echo.
echo 输出文件:
echo - log/座位信息_最终分配.xlsx (分配结果)
echo - log/最终座位分配日志.xlsx (详细日志)
echo - log/seat_allocation_log.txt (运行日志)
echo.
echo 注意事项:
echo - 程序支持智能文件识别
echo - 支持1-10人连坐需求
echo - 支持备注分组和手机号分组两种模式
echo.
echo 如有问题请查看日志文件
) > "release\使用说明.txt"
echo.
echo ================================
echo 打包完成!
echo ================================
echo.
echo 发布文件位置: release\
echo 主程序: release\座位分配系统.exe
echo 使用说明: release\使用说明.txt
echo 示例文件: release\示例文件\
echo.
echo 您可以将整个release文件夹分发给用户
) else (
echo.
echo [错误] 打包失败!
echo 请检查错误信息并重试
pause
exit /b 1
)
echo.
echo 按任意键继续...
pause >nul

226
build_windows.ps1 Normal file
View File

@ -0,0 +1,226 @@
# 座位分配系统 Windows 打包脚本 (PowerShell版本)
# 编码UTF-8
Write-Host "================================" -ForegroundColor Cyan
Write-Host " 座位分配系统 Windows 打包脚本" -ForegroundColor Cyan
Write-Host "================================" -ForegroundColor Cyan
Write-Host ""
# 设置错误处理
$ErrorActionPreference = "Stop"
try {
# 检查Python是否安装
Write-Host "[信息] 检查Python环境..." -ForegroundColor Yellow
$pythonVersion = python --version 2>&1
if ($LASTEXITCODE -ne 0) {
throw "Python未安装或不在PATH中请先安装Python 3.7+"
}
Write-Host "Python版本: $pythonVersion" -ForegroundColor Green
# 检查pip
$pipVersion = pip --version 2>&1
if ($LASTEXITCODE -ne 0) {
throw "pip不可用"
}
Write-Host "pip版本: $pipVersion" -ForegroundColor Green
# 升级pip
Write-Host ""
Write-Host "[步骤1] 升级pip..." -ForegroundColor Yellow
python -m pip install --upgrade pip
# 安装PyInstaller
Write-Host ""
Write-Host "[步骤2] 安装PyInstaller..." -ForegroundColor Yellow
pip install pyinstaller
# 安装依赖包
Write-Host ""
Write-Host "[步骤3] 安装依赖包..." -ForegroundColor Yellow
pip install pandas numpy openpyxl
# 创建必要的目录
Write-Host ""
Write-Host "[步骤4] 创建构建目录..." -ForegroundColor Yellow
$dirs = @("build", "dist", "release", "release\示例文件")
foreach ($dir in $dirs) {
if (!(Test-Path $dir)) {
New-Item -ItemType Directory -Path $dir -Force | Out-Null
Write-Host "创建目录: $dir" -ForegroundColor Gray
}
}
# 检查主文件是否存在
if (!(Test-Path "seat_allocation_system.py")) {
throw "找不到主程序文件 seat_allocation_system.py"
}
# 打包主程序
Write-Host ""
Write-Host "[步骤5] 开始打包座位分配系统..." -ForegroundColor Yellow
Write-Host "这可能需要几分钟时间,请耐心等待..." -ForegroundColor Gray
$pyinstallerArgs = @(
"--onefile",
"--console",
"--name", "座位分配系统",
"--distpath", "dist",
"--workpath", "build",
"--specpath", "build",
"--clean",
"seat_allocation_system.py"
)
# 如果存在图标文件,添加图标参数
if (Test-Path "icon.ico") {
$pyinstallerArgs += "--icon", "icon.ico"
}
# 如果存在README文件添加数据文件
if (Test-Path "README.md") {
$pyinstallerArgs += "--add-data", "README.md;."
}
& pyinstaller @pyinstallerArgs
if ($LASTEXITCODE -ne 0) {
throw "PyInstaller打包失败"
}
# 检查打包结果
$exePath = "dist\座位分配系统.exe"
if (!(Test-Path $exePath)) {
throw "打包失败:找不到生成的可执行文件"
}
# 复制文件到发布目录
Write-Host ""
Write-Host "[步骤6] 创建发布包..." -ForegroundColor Yellow
# 复制主程序
Copy-Item $exePath "release\" -Force
Write-Host "复制主程序到发布目录" -ForegroundColor Gray
# 复制示例文件
$exampleFiles = @("人员信息_示例.xlsx", "座位信息_示例.xlsx", "*.xlsx")
foreach ($pattern in $exampleFiles) {
$files = Get-ChildItem -Path . -Name $pattern -ErrorAction SilentlyContinue
foreach ($file in $files) {
if ($file -notlike "*_最终分配*" -and $file -notlike "*日志*") {
Copy-Item $file "release\示例文件\" -Force -ErrorAction SilentlyContinue
Write-Host "复制示例文件: $file" -ForegroundColor Gray
}
}
}
# 创建使用说明
Write-Host ""
Write-Host "[步骤7] 创建使用说明..." -ForegroundColor Yellow
$readme = @"
座位分配系统 v2.0
==================
使用方法
1. 将人员信息和座位信息的Excel文件放在程序同一目录下
2. 双击运行"座位分配系统.exe"
3. 按照提示操作
文件要求
- 人员信息文件包含姓名证件类型证件号手机号备注等列
- 座位信息文件包含区域楼层排号座位号等列
程序特性
- 智能文件识别自动识别Excel文件类型
- 支持1-10人连坐需求
- 支持备注分组和手机号分组两种模式
- 自动验证数据完整性和可行性
- 智能座位分配算法
- 详细的分配日志和统计
输出文件
程序运行后会在当前目录创建log文件夹包含
- log/座位信息_最终分配.xlsx 分配结果
- log/最终座位分配日志.xlsx 详细日志
- log/seat_allocation_log.txt 运行日志
操作步骤
1. 选择文件识别模式默认文件名 智能识别
2. 选择连坐分组方式备注分组 手机号分组
3. 程序自动校验数据完整性
4. 执行智能座位分配
5. 查看输出结果
注意事项
- 确保Excel文件格式正确
- 人员信息文件的"备注"列用数字表示连坐人数
- 程序会自动过滤无效数据
- 如有问题请查看详细日志文件
技术支持
如遇到问题请查看log文件夹中的日志文件获取详细信息
版本信息
- 版本v2.0 (智能识别版)
- 支持Windows 7/8/10/11
- 依赖无需额外安装Python环境
"@
$readme | Out-File -FilePath "release\使用说明.txt" -Encoding UTF8
# 创建批处理启动文件(可选)
$batchContent = @"
@echo off
chcp 65001 >nul
echo 启动座位分配系统...
echo.
座位分配系统.exe
echo.
echo 程序已结束
pause
"@
$batchContent | Out-File -FilePath "release\启动座位分配系统.bat" -Encoding UTF8
# 显示完成信息
Write-Host ""
Write-Host "================================" -ForegroundColor Green
Write-Host " 打包完成!" -ForegroundColor Green
Write-Host "================================" -ForegroundColor Green
Write-Host ""
Write-Host "发布文件位置:" -ForegroundColor Cyan
Write-Host "📁 release\" -ForegroundColor Yellow
Write-Host " ├── 座位分配系统.exe (主程序)" -ForegroundColor White
Write-Host " ├── 启动座位分配系统.bat (启动脚本)" -ForegroundColor White
Write-Host " ├── 使用说明.txt (使用说明)" -ForegroundColor White
Write-Host " └── 示例文件\ (示例文件夹)" -ForegroundColor White
Write-Host ""
Write-Host "文件大小信息:" -ForegroundColor Cyan
$fileSize = (Get-Item $exePath).Length / 1MB
Write-Host "主程序大小: $([math]::Round($fileSize, 2)) MB" -ForegroundColor Yellow
Write-Host ""
Write-Host "部署说明:" -ForegroundColor Cyan
Write-Host "1. 将整个 release 文件夹分发给用户" -ForegroundColor White
Write-Host "2. 用户直接运行 座位分配系统.exe 或 启动座位分配系统.bat" -ForegroundColor White
Write-Host "3. 无需安装Python环境" -ForegroundColor White
Write-Host ""
Write-Host "✅ 打包成功完成!" -ForegroundColor Green
} catch {
Write-Host ""
Write-Host "❌ 打包过程中出现错误:" -ForegroundColor Red
Write-Host $_.Exception.Message -ForegroundColor Red
Write-Host ""
Write-Host "常见解决方案:" -ForegroundColor Yellow
Write-Host "1. 确保已安装Python 3.7+" -ForegroundColor White
Write-Host "2. 确保网络连接正常(需要下载依赖包)" -ForegroundColor White
Write-Host "3. 确保有足够的磁盘空间" -ForegroundColor White
Write-Host "4. 尝试以管理员权限运行此脚本" -ForegroundColor White
exit 1
}
Write-Host ""
Write-Host "按任意键继续..." -ForegroundColor Gray
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

79
快速打包.bat Normal file
View File

@ -0,0 +1,79 @@
@echo off
chcp 65001 >nul
title 座位分配系统 - 快速打包
echo.
echo ╔══════════════════════════════════════╗
echo ║ 座位分配系统 快速打包 ║
echo ╚══════════════════════════════════════╝
echo.
:: 检查Python
python --version >nul 2>&1
if %errorlevel% neq 0 (
echo ❌ Python未安装请先安装Python
goto :error
)
:: 安装打包工具
echo 📦 安装打包工具...
pip install pyinstaller pandas numpy openpyxl --quiet
:: 清理旧文件
echo 🧹 清理旧文件...
if exist "dist" rmdir /s /q "dist"
if exist "build" rmdir /s /q "build"
if exist "release" rmdir /s /q "release"
:: 开始打包
echo 🔨 开始打包...
pyinstaller --onefile --console --name "座位分配系统" --clean seat_allocation_system.py
:: 检查结果
if not exist "dist\座位分配系统.exe" (
echo ❌ 打包失败
goto :error
)
:: 创建发布目录
echo 📁 创建发布目录...
mkdir "release"
copy "dist\座位分配系统.exe" "release\"
:: 创建说明文件
echo 📝 创建说明文件...
(
echo 座位分配系统 v2.0
echo ==================
echo.
echo 使用方法:
echo 1. 将Excel数据文件放在本程序同一目录
echo 2. 双击运行"座位分配系统.exe"
echo 3. 按提示操作即可
echo.
echo 输出文件将保存在log文件夹中
echo.
echo 如有问题请查看log文件夹中的日志
) > "release\使用说明.txt"
:: 完成
echo.
echo ✅ 打包完成!
echo.
echo 📍 发布文件位置: release\座位分配系统.exe
echo 📍 使用说明: release\使用说明.txt
echo.
echo 可以将release文件夹分发给用户使用
goto :end
:error
echo.
echo ❌ 打包失败,请检查错误信息
echo.
pause
exit /b 1
:end
echo.
echo 按任意键退出...
pause >nul