feat: 添加一键安装脚本实现开箱即用

- 添加 install.bat Windows一键安装脚本
- 添加 install.sh Linux/Mac一键安装脚本
- 添加 auto_install.py 跨平台自动化安装脚本
- 更新 README.md 添加详细的一键安装说明
- 测试环境检查脚本功能正常
This commit is contained in:
2311020116lhh 2026-01-15 22:01:53 +08:00
parent 937544e7b6
commit 5db2c75492
4 changed files with 604 additions and 14 deletions

141
README.md
View File

@ -8,9 +8,16 @@
ml_course_design/
├── pyproject.toml # 项目配置与依赖
├── uv.lock # 锁定的依赖版本
├── requirements.txt # Python依赖列表
├── setup.py # 包安装脚本
├── README.md # 项目说明与报告
├── QUICKSTART.md # 快速开始指南
├── .env.example # 环境变量模板
├── .gitignore # Git 忽略规则
├── install.bat # Windows一键安装脚本
├── install.sh # Linux/Mac一键安装脚本
├── auto_install.py # 跨平台自动化安装脚本
├── check_environment.py # 环境检查脚本
├── data/ # 数据目录
│ └── README.md # 数据来源说明
@ -131,6 +138,47 @@ ml_course_design/
## 快速开始
### 🚀 一键安装(推荐)
**最简单的方式 - 只需运行一个脚本!**
#### Windows 用户
双击运行 `install.bat` 文件,或在命令行中执行:
```bash
install.bat
```
#### Linux/Mac 用户
```bash
chmod +x install.sh
./install.sh
```
#### 跨平台方式使用Python
```bash
python auto_install.py
```
**一键安装脚本会自动完成以下步骤:**
1. ✓ 检查Python版本
2. ✓ 安装所有依赖包
3. ✓ 提示下载数据文件
4. ✓ 自动训练模型(如果需要)
5. ✓ 运行环境检查
6. ✓ 启动Web界面
**注意:** 首次运行时,脚本会提示您下载数据文件,请按照提示操作。
---
### 手动安装
如果您希望手动控制每个步骤,请按照以下说明操作:
### 前置要求
- Python 3.10 或更高版本
@ -213,6 +261,99 @@ streamlit run src/streamlit_app.py
查看 [QUICKSTART.md](QUICKSTART.md) 获取详细的使用说明和常见问题解答。
---
## 一键安装脚本说明
### 脚本功能
我们提供了三个自动化安装脚本,让您无需手动执行多个步骤:
| 脚本文件 | 适用平台 | 使用方法 |
|-----------|---------|---------|
| `install.bat` | Windows | 双击运行或在命令行执行 `install.bat` |
| `install.sh` | Linux/Mac | `chmod +x install.sh && ./install.sh` |
| `auto_install.py` | 跨平台 | `python auto_install.py` |
### 自动化流程
脚本会自动完成以下步骤:
1. **环境检查**
- 验证Python版本需要3.10+
- 检查必要的依赖包
2. **依赖安装**
- 自动安装所有Python依赖
- 支持国内镜像源加速
3. **数据准备**
- 检查数据文件是否存在
- 提供数据下载链接和说明
4. **模型训练**
- 自动训练模型(如果不存在)
- 保存模型到 `models/` 目录
5. **环境验证**
- 运行环境检查脚本
- 验证所有组件正常
6. **启动应用**
- 自动启动Web界面
- 在浏览器中打开应用
### 首次使用
首次运行脚本时,您需要:
1. **下载数据文件**
- 访问: https://www.kaggle.com/datasets/mlg-ulb/creditcardfraud
- 下载 `creditcard.csv`
- 放入项目的 `data/` 目录
2. **运行安装脚本**
- Windows: 双击 `install.bat`
- Linux/Mac: 执行 `./install.sh`
3. **等待安装完成**
- 依赖安装2-5分钟
- 模型训练5-10分钟取决于硬件
4. **开始使用**
- Web界面会自动在浏览器中打开
- 访问地址: http://localhost:8501
### 常见问题
**Q: 脚本运行失败怎么办?**
A: 可以尝试以下步骤:
1. 确保Python版本 >= 3.10
2. 检查网络连接
3. 手动运行: `pip install -r requirements.txt`
4. 查看 [QUICKSTART.md](QUICKSTART.md) 的常见问题部分
**Q: 如何使用国内镜像源加速安装?**
A: 修改安装命令:
```bash
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
```
**Q: 模型训练时间太长怎么办?**
A: 模型训练需要一定时间,这是正常的。您可以:
- 等待训练完成(推荐)
- 使用预训练模型(如果提供)
- 减少训练数据量(修改代码)
**Q: 如何停止Web服务**
A: 在运行脚本的终端窗口中按 `Ctrl+C`
---
## 运行测试
```bash

241
auto_install.py Normal file
View File

@ -0,0 +1,241 @@
"""
信用卡欺诈检测系统 - 自动化安装脚本
跨平台支持WindowsLinuxmacOS
"""
import sys
import subprocess
import os
from pathlib import Path
import time
def print_header(text):
"""打印标题"""
print("=" * 60)
print(text)
print("=" * 60)
print()
def print_step(step_num, total_steps, description):
"""打印步骤信息"""
print(f"[步骤 {step_num}/{total_steps}] {description}")
def run_command(command, description=""):
"""运行命令并处理错误"""
try:
if description:
print(f" 正在执行: {description}")
result = subprocess.run(
command,
shell=True,
check=True,
capture_output=True,
text=True
)
if result.stdout:
print(result.stdout)
return True
except subprocess.CalledProcessError as e:
print(f" [错误] 命令执行失败")
if e.stderr:
print(f" 错误信息: {e.stderr}")
return False
def check_python_version():
"""检查Python版本"""
print_step(1, 5, "检查Python版本...")
version = sys.version_info
print(f" Python版本: {version.major}.{version.minor}.{version.micro}")
if version.major == 3 and version.minor >= 10:
print(" ✓ Python版本符合要求 (>= 3.10)")
return True
else:
print(" ✗ Python版本不符合要求需要3.10或更高版本")
print(" 请从 https://www.python.org/downloads/ 下载最新版本")
return False
def install_dependencies():
"""安装Python依赖"""
print_step(2, 5, "安装Python依赖...")
print(" 正在安装依赖包,这可能需要几分钟...")
# 尝试使用pip安装
success = run_command(
f"{sys.executable} -m pip install -r requirements.txt",
"安装依赖包"
)
if success:
print(" ✓ 依赖安装完成")
return True
else:
print(" ✗ 依赖安装失败")
print(" 请检查网络连接或尝试使用国内镜像源:")
print(f" {sys.executable} -m pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple")
return False
def check_data_file():
"""检查数据文件"""
print_step(3, 5, "检查数据文件...")
data_file = Path("data/creditcard.csv")
if data_file.exists():
file_size = data_file.stat().st_size / (1024 * 1024) # MB
print(f" ✓ 数据文件已存在 (大小: {file_size:.2f} MB)")
return True
else:
print(" ✗ 未找到数据文件 data/creditcard.csv")
print()
print(" 请从以下地址下载数据集:")
print(" https://www.kaggle.com/datasets/mlg-ulb/creditcardfraud")
print()
print(" 下载后将 creditcard.csv 文件放入 data/ 目录")
print()
response = input(" 数据文件已准备好吗?(Y/N): ").strip().upper()
if response == 'Y':
print(" ✓ 继续安装...")
return True
else:
print(" ✗ 安装已取消")
return False
def check_model_files():
"""检查并训练模型"""
print_step(4, 5, "检查模型文件...")
models_dir = Path("models")
model_file = models_dir / "random_forest_model.joblib"
if model_file.exists():
file_size = model_file.stat().st_size / 1024 # KB
print(f" ✓ 模型文件已存在 (大小: {file_size:.2f} KB)")
return True
else:
print(" 模型文件不存在,开始训练模型...")
print(" 这可能需要几分钟,请耐心等待...")
success = run_command(
f"{sys.executable} src/train.py",
"训练模型"
)
if success:
print(" ✓ 模型训练完成")
return True
else:
print(" ✗ 模型训练失败")
return False
def run_environment_check():
"""运行环境检查"""
print_step(5, 5, "运行环境检查...")
success = run_command(
f"{sys.executable} check_environment.py",
"检查环境"
)
if success:
print(" ✓ 环境检查通过")
else:
print(" ⚠ 环境检查发现问题,但将继续启动应用")
return True
def launch_application():
"""启动应用"""
print()
print_header("安装完成正在启动Web界面...")
print()
print("提示:")
print("- Web界面将在浏览器中自动打开")
print("- 如果没有自动打开,请访问: http://localhost:8501")
print("- 按 Ctrl+C 可以停止服务")
print()
# 等待几秒让用户看到提示
time.sleep(2)
# 启动应用
try:
subprocess.run(
f"{sys.executable} src/agent_app.py",
shell=True,
check=True
)
except KeyboardInterrupt:
print()
print("应用已停止")
except Exception as e:
print(f"启动应用时出错: {e}")
def main():
"""主函数"""
print_header("信用卡欺诈检测系统 - 自动化安装脚本")
# 检查Python版本
if not check_python_version():
input("按回车键退出...")
sys.exit(1)
print()
# 安装依赖
if not install_dependencies():
input("按回车键退出...")
sys.exit(1)
print()
# 检查数据文件
if not check_data_file():
input("按回车键退出...")
sys.exit(1)
print()
# 检查模型文件
if not check_model_files():
input("按回车键退出...")
sys.exit(1)
print()
# 运行环境检查
run_environment_check()
# 启动应用
launch_application()
if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
print()
print("安装已取消")
sys.exit(1)
except Exception as e:
print()
print(f"安装过程中出现错误: {e}")
import traceback
traceback.print_exc()
input("按回车键退出...")
sys.exit(1)

112
install.bat Normal file
View File

@ -0,0 +1,112 @@
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
echo ============================================================
echo 信用卡欺诈检测系统 - 一键安装脚本
echo ============================================================
echo.
REM 检查Python是否安装
python --version >nul 2>&1
if %errorlevel% neq 0 (
echo [错误] 未检测到Python请先安装Python 3.10或更高版本
echo 下载地址: https://www.python.org/downloads/
pause
exit /b 1
)
echo [步骤 1/5] 检查Python版本...
for /f "tokens=2" %%i in ('python --version 2^>^&1') do set PYTHON_VERSION=%%i
echo Python版本: %PYTHON_VERSION%
echo.
REM 检查Python版本是否满足要求
for /f "tokens=1,2 delims=." %%a in ("%PYTHON_VERSION%") do (
set MAJOR=%%a
set MINOR=%%b
)
if %MAJOR% lss 3 (
echo [错误] Python版本过低需要3.10或更高版本
pause
exit /b 1
)
if %MAJOR% equ 3 (
if %MINOR% lss 10 (
echo [错误] Python版本过低需要3.10或更高版本
pause
exit /b 1
)
)
echo [步骤 2/5] 安装Python依赖...
echo 正在安装依赖包,这可能需要几分钟...
pip install -r requirements.txt
if %errorlevel% neq 0 (
echo [错误] 依赖安装失败
echo 请检查网络连接或尝试使用国内镜像源:
echo pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
pause
exit /b 1
)
echo 依赖安装完成
echo.
echo [步骤 3/5] 检查数据文件...
if not exist "data\creditcard.csv" (
echo [警告] 未找到数据文件 data\creditcard.csv
echo.
echo 请从以下地址下载数据集:
echo https://www.kaggle.com/datasets/mlg-ulb/creditcardfraud
echo.
echo 下载后将 creditcard.csv 文件放入 data\ 目录
echo.
set /p DATA_READY="数据文件已准备好吗?(Y/N): "
if /i not "!DATA_READY!"=="Y" (
echo 安装已取消
pause
exit /b 1
)
) else (
echo 数据文件已存在
)
echo.
echo [步骤 4/5] 检查模型文件...
if not exist "models\random_forest_model.joblib" (
echo 模型文件不存在,开始训练模型...
echo 这可能需要几分钟,请耐心等待...
python src\train.py
if %errorlevel% neq 0 (
echo [错误] 模型训练失败
pause
exit /b 1
)
echo 模型训练完成
) else (
echo 模型文件已存在
)
echo.
echo [步骤 5/5] 运行环境检查...
python check_environment.py
if %errorlevel% neq 0 (
echo [警告] 环境检查发现问题,但将继续启动应用
)
echo.
echo ============================================================
echo 安装完成正在启动Web界面...
echo ============================================================
echo.
echo 提示:
echo - Web界面将在浏览器中自动打开
echo - 如果没有自动打开,请访问: http://localhost:8501
echo - 按 Ctrl+C 可以停止服务
echo.
python src\agent_app.py
pause

96
install.sh Normal file
View File

@ -0,0 +1,96 @@
#!/bin/bash
set -e
echo "============================================================"
echo "信用卡欺诈检测系统 - 一键安装脚本"
echo "============================================================"
echo ""
# 检查Python是否安装
if ! command -v python3 &> /dev/null; then
echo "[错误] 未检测到Python请先安装Python 3.10或更高版本"
echo "Ubuntu/Debian: sudo apt-get install python3 python3-pip"
echo "CentOS/RHEL: sudo yum install python3 python3-pip"
echo "macOS: brew install python3"
exit 1
fi
echo "[步骤 1/5] 检查Python版本..."
PYTHON_VERSION=$(python3 --version 2>&1 | awk '{print $2}')
echo "Python版本: $PYTHON_VERSION"
echo ""
# 检查Python版本是否满足要求
PYTHON_MAJOR=$(echo $PYTHON_VERSION | cut -d. -f1)
PYTHON_MINOR=$(echo $PYTHON_VERSION | cut -d. -f2)
if [ "$PYTHON_MAJOR" -lt 3 ] || ([ "$PYTHON_MAJOR" -eq 3 ] && [ "$PYTHON_MINOR" -lt 10 ]); then
echo "[错误] Python版本过低需要3.10或更高版本"
exit 1
fi
echo "[步骤 2/5] 安装Python依赖..."
echo "正在安装依赖包,这可能需要几分钟..."
pip3 install -r requirements.txt
if [ $? -ne 0 ]; then
echo "[错误] 依赖安装失败"
echo "请检查网络连接或尝试使用国内镜像源:"
echo "pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple"
exit 1
fi
echo "依赖安装完成"
echo ""
echo "[步骤 3/5] 检查数据文件..."
if [ ! -f "data/creditcard.csv" ]; then
echo "[警告] 未找到数据文件 data/creditcard.csv"
echo ""
echo "请从以下地址下载数据集:"
echo "https://www.kaggle.com/datasets/mlg-ulb/creditcardfraud"
echo ""
echo "下载后将 creditcard.csv 文件放入 data/ 目录"
echo ""
read -p "数据文件已准备好吗?(Y/N): " DATA_READY
if [[ ! "$DATA_READY" =~ ^[Yy]$ ]]; then
echo "安装已取消"
exit 1
fi
else
echo "数据文件已存在"
fi
echo ""
echo "[步骤 4/5] 检查模型文件..."
if [ ! -f "models/random_forest_model.joblib" ]; then
echo "模型文件不存在,开始训练模型..."
echo "这可能需要几分钟,请耐心等待..."
python3 src/train.py
if [ $? -ne 0 ]; then
echo "[错误] 模型训练失败"
exit 1
fi
echo "模型训练完成"
else
echo "模型文件已存在"
fi
echo ""
echo "[步骤 5/5] 运行环境检查..."
python3 check_environment.py
if [ $? -ne 0 ]; then
echo "[警告] 环境检查发现问题,但将继续启动应用"
fi
echo ""
echo "============================================================"
echo "安装完成正在启动Web界面..."
echo "============================================================"
echo ""
echo "提示:"
echo "- Web界面将在浏览器中自动打开"
echo "- 如果没有自动打开,请访问: http://localhost:8501"
echo "- 按 Ctrl+C 可以停止服务"
echo ""
python3 src/agent_app.py