From 1301aeb9b74fb76ec6040a69579ae074669b604a Mon Sep 17 00:00:00 2001 From: AskaEth Date: Sat, 13 Jun 2026 21:01:33 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=90=AF=E5=8A=A8=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=E7=BB=91=E5=AE=9A=20venv=20Python=20+=20=E7=BC=BA=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=E8=87=AA=E5=8A=A8=E5=AE=89=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- start.bat | 31 +++++++++++++++++++------------ start.sh | 29 +++++++++++++++++++++++------ 2 files changed, 42 insertions(+), 18 deletions(-) diff --git a/start.bat b/start.bat index 03e13bb..419b969 100644 --- a/start.bat +++ b/start.bat @@ -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,9 +57,14 @@ if exist "config\framework\base_config.yaml" ( echo. if %FAIL% gtr 0 ( - echo [FAIL] %FAIL% 项缺失,请先安装: pip install -r requirements.txt - pause - exit /b 1 + 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% 项) @@ -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 diff --git a/start.sh b/start.sh index dfa6be4..35bb71f 100755 --- a/start.sh +++ b/start.sh @@ -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,8 +64,13 @@ fi echo "" if [ "$fail" -gt 0 ]; then - echo -e "${RED}❌ $fail 项缺失,请先安装: pip install -r requirements.txt${NC}" - exit 1 + 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}" @@ -62,4 +79,4 @@ echo "🚀 启动 SenSu (无头模式)..." echo " Web 面板: http://0.0.0.0:4200/SenSu" echo "" -python3 main.py --headless +"$PYTHON" main.py --headless