Files
AskaEth 1301aeb9b7 fix: 启动脚本绑定 venv Python + 缺依赖自动安装
- start.bat: 改用 .venv\Scripts\python.exe,缺依赖时自动 pip install
- start.sh: 优先 .venv/bin/python3,fallback 到系统 python3/python
- 两个脚本均不再依赖 uv,使用标准 python -m venv + pip

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-13 21:02:01 +08:00

83 lines
2.5 KiB
Bash
Executable File

#!/bin/bash
# SenSu 无头启动脚本 (Linux/macOS/Termux)
# 自动检测依赖完整性后启动
set -e
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
cd "$SCRIPT_DIR"
# ── Python 路径: 优先 venv ──
if [ -f "$SCRIPT_DIR/.venv/bin/python3" ]; then
PYTHON="$SCRIPT_DIR/.venv/bin/python3"
elif [ -f "$SCRIPT_DIR/.venv/bin/python" ]; then
PYTHON="$SCRIPT_DIR/.venv/bin/python"
elif command -v python3 &>/dev/null; then
PYTHON="python3"
else
PYTHON="python"
fi
# ── 颜色 ──
RED='\033[31m'; GREEN='\033[32m'; YELLOW='\033[33m'; NC='\033[0m'
pass=0; fail=0
check() {
if command -v "$1" &>/dev/null || "$PYTHON" -c "$2" 2>/dev/null; then
echo -e " ${GREEN}${NC} $3"
pass=$((pass+1))
else
echo -e " ${RED}${NC} $3 ${YELLOW}(缺失)${NC}"
fail=$((fail+1))
fi
}
echo "🐱 SenSu 依赖检测..."
echo ""
# ── 系统依赖 ──
check "" "" "Python 3.11+"
"$PYTHON" -c "import sys; assert sys.version_info >= (3,11)" 2>/dev/null || {
echo -e " ${YELLOW}⚠ Python 版本过低,需要 3.11+${NC}"
fail=$((fail+1))
}
# ── Python 核心依赖 ──
check "" "import aiohttp" "aiohttp (Web 服务)"
check "" "import yaml" "PyYAML (配置文件)"
check "" "import textual" "Textual (TUI)"
check "" "import watchdog" "watchdog (热重载)"
check "" "import psutil" "psutil (系统监控)"
check "" "import rich" "rich (终端美化)"
check "" "import websockets" "websockets (WebSocket)"
# ── 配置文件 ──
if [ -f "config/framework/base_config.yaml" ]; then
echo -e " ${GREEN}${NC} base_config.yaml"
pass=$((pass+1))
elif [ -f "config/framework/base_config.yaml.example" ]; then
cp config/framework/base_config.yaml.example config/framework/base_config.yaml
echo -e " ${GREEN}${NC} 从模板创建 base_config.yaml"
pass=$((pass+1))
else
echo -e " ${RED}${NC} 配置文件缺失 (无模板可用)"
fail=$((fail+1))
fi
echo ""
if [ "$fail" -gt 0 ]; then
echo -e "${YELLOW}$fail 项缺失,自动安装...${NC}"
"$PYTHON" -m pip install -r requirements.txt
if [ $? -ne 0 ]; then
echo -e "${RED}❌ 安装失败,请手动执行: python3 -m venv .venv && source .venv/bin/activate && pip install -r requirements.txt${NC}"
exit 1
fi
echo -e "${GREEN}✅ 依赖安装完成${NC}"
fi
echo -e "${GREEN}✅ 所有依赖就绪 ($pass 项)${NC}"
echo ""
echo "🚀 启动 SenSu (无头模式)..."
echo " Web 面板: http://0.0.0.0:4200/SenSu"
echo ""
"$PYTHON" main.py --headless