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>
This commit is contained in:
@@ -11,8 +11,10 @@ echo.
|
||||
set PASS=0
|
||||
set FAIL=0
|
||||
|
||||
:: ── Python ──
|
||||
python --version >nul 2>&1
|
||||
:: ── Python (venv) ──
|
||||
set PYTHON=%~dp0.venv\Scripts\python.exe
|
||||
if not exist "%PYTHON%" (echo [FAIL] .venv 未创建,请先运行: python -m venv .venv ^&^& .venv\Scripts\pip install -r requirements.txt & pause & exit /b 1)
|
||||
"%PYTHON%" --version >nul 2>&1
|
||||
if %errorlevel% equ 0 (
|
||||
echo [OK] Python
|
||||
set /a PASS+=1
|
||||
@@ -22,22 +24,22 @@ if %errorlevel% equ 0 (
|
||||
)
|
||||
|
||||
:: ── Python 依赖 ──
|
||||
python -c "import aiohttp" >nul 2>&1
|
||||
"%PYTHON%" -c "import aiohttp" >nul 2>&1
|
||||
if %errorlevel% equ 0 (echo [OK] aiohttp& set /a PASS+=1) else (echo [FAIL] aiohttp 缺失& set /a FAIL+=1)
|
||||
|
||||
python -c "import yaml" >nul 2>&1
|
||||
"%PYTHON%" -c "import yaml" >nul 2>&1
|
||||
if %errorlevel% equ 0 (echo [OK] PyYAML& set /a PASS+=1) else (echo [FAIL] PyYAML 缺失& set /a FAIL+=1)
|
||||
|
||||
python -c "import textual" >nul 2>&1
|
||||
"%PYTHON%" -c "import textual" >nul 2>&1
|
||||
if %errorlevel% equ 0 (echo [OK] Textual& set /a PASS+=1) else (echo [FAIL] Textual 缺失& set /a FAIL+=1)
|
||||
|
||||
python -c "import watchdog" >nul 2>&1
|
||||
"%PYTHON%" -c "import watchdog" >nul 2>&1
|
||||
if %errorlevel% equ 0 (echo [OK] watchdog& set /a PASS+=1) else (echo [FAIL] watchdog 缺失& set /a FAIL+=1)
|
||||
|
||||
python -c "import psutil" >nul 2>&1
|
||||
"%PYTHON%" -c "import psutil" >nul 2>&1
|
||||
if %errorlevel% equ 0 (echo [OK] psutil& set /a PASS+=1) else (echo [FAIL] psutil 缺失& set /a FAIL+=1)
|
||||
|
||||
python -c "import rich" >nul 2>&1
|
||||
"%PYTHON%" -c "import rich" >nul 2>&1
|
||||
if %errorlevel% equ 0 (echo [OK] rich& set /a PASS+=1) else (echo [FAIL] rich 缺失& set /a FAIL+=1)
|
||||
|
||||
:: ── 配置文件 ──
|
||||
@@ -55,10 +57,15 @@ if exist "config\framework\base_config.yaml" (
|
||||
|
||||
echo.
|
||||
if %FAIL% gtr 0 (
|
||||
echo [FAIL] %FAIL% 项缺失,请先安装: pip install -r requirements.txt
|
||||
echo [WARN] %FAIL% 项缺失,自动安装...
|
||||
"%PYTHON%" -m pip install -r requirements.txt
|
||||
if %errorlevel% neq 0 (
|
||||
echo [FAIL] 安装失败,请手动执行: .venv\Scripts\pip install -r requirements.txt
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
echo [OK] 依赖安装完成
|
||||
)
|
||||
|
||||
echo [OK] 所有依赖就绪 (%PASS% 项)
|
||||
echo.
|
||||
@@ -66,6 +73,6 @@ echo 🚀 启动 SenSu (无头模式)...
|
||||
echo Web 面板: http://0.0.0.0:4200/SenSu
|
||||
echo.
|
||||
|
||||
python main.py --headless
|
||||
"%PYTHON%" main.py --headless
|
||||
|
||||
pause
|
||||
|
||||
@@ -6,11 +6,22 @@ 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 || python3 -c "$2" 2>/dev/null; then
|
||||
if command -v "$1" &>/dev/null || "$PYTHON" -c "$2" 2>/dev/null; then
|
||||
echo -e " ${GREEN}✓${NC} $3"
|
||||
pass=$((pass+1))
|
||||
else
|
||||
@@ -23,8 +34,8 @@ echo "🐱 SenSu 依赖检测..."
|
||||
echo ""
|
||||
|
||||
# ── 系统依赖 ──
|
||||
check "python3" "" "Python 3.11+"
|
||||
python3 -c "import sys; assert sys.version_info >= (3,11)" 2>/dev/null || {
|
||||
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))
|
||||
}
|
||||
@@ -36,6 +47,7 @@ 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
|
||||
@@ -52,9 +64,14 @@ fi
|
||||
|
||||
echo ""
|
||||
if [ "$fail" -gt 0 ]; then
|
||||
echo -e "${RED}❌ $fail 项缺失,请先安装: pip install -r requirements.txt${NC}"
|
||||
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 ""
|
||||
@@ -62,4 +79,4 @@ echo "🚀 启动 SenSu (无头模式)..."
|
||||
echo " Web 面板: http://0.0.0.0:4200/SenSu"
|
||||
echo ""
|
||||
|
||||
python3 main.py --headless
|
||||
"$PYTHON" main.py --headless
|
||||
|
||||
Reference in New Issue
Block a user