qinglong/back
jiandanc 0af546cd1d feat: 支持 Python venv 隔离环境,适配 Node.js 原生部署
## 背景
原方案使用系统 Python + pip --prefix 安装依赖到 data/dep_cache/python3,
系统 Python 环境被污染,且无法隔离不同项目的依赖。

## 改动内容

### 核心:Python venv 支持
- shell/start.sh: 使用 python3 -m venv 创建虚拟环境,替代 --prefix 模式
  - 从 .env 文件读取 PYTHON_VENV_DIR 配置
  - 首次启动自动创建 .venv,已存在则跳过
  - 仅将 .venv/bin 加入 PATH 优先级,不设置 PYTHONHOME/PYTHONPATH(避免破坏 venv 机制)
  - .env 不再强制覆盖,仅首次从 .env.example 复制
  - 启动时自动修复 task/ql 软链接指向当前部署目录

### 后端适配
- back/config/const.ts: 新增 PYTHON_VENV_DIR 常量
- back/config/util.ts: venv 模式下跳过 pip --prefix,直接使用 venv 的 pip3

### 开发模式支持
- shell/dev-env.sh: pnpm start 时自动 source,将 .venv/bin 加入 PATH
- package.json: start:back 加入 source dev-env.sh

### 新增文件
- shell/start-simplify.sh: 精简版启动脚本(跳过系统依赖安装,适用于已预装环境的服务器)
- README-NODE.md: Node.js 原生部署完整文档

### 配置
- .env.example: 新增 PYTHON_VENV_DIR=./.venv 配置项(默认注释状态)

## 兼容性
- Docker 模式不受影响(使用独立的 docker-entrypoint.sh,走原有 --prefix 逻辑)
- 未配置 PYTHON_VENV_DIR 时默认使用系统 Python(向后兼容)
2026-06-07 21:03:51 +08:00
..
api 增加任务统计 2026-06-01 18:20:18 +08:00
config feat: 支持 Python venv 隔离环境,适配 Node.js 原生部署 2026-06-07 21:03:51 +08:00
data 定时任务增加 work_dir 设置 2026-06-07 13:19:01 +08:00
interface 修改定时规则类型 2025-02-21 01:35:08 +08:00
loaders 定时任务增加 work_dir 设置 2026-06-07 13:19:01 +08:00
middlewares 修改服务启动逻辑 2025-05-07 09:30:00 +08:00
protos Add missing larkSecret field to gRPC NotificationInfo proto (#2880) 2025-12-22 23:38:42 +08:00
schedule fix: gRPC extra_schedules 为空时序列化报错 not iterable 2026-05-31 00:14:22 +08:00
services 定时任务增加 work_dir 设置 2026-06-07 13:19:01 +08:00
shared 增加 localhost 检测 2026-05-17 23:43:09 +08:00
types 修改服务启动逻辑 2025-05-07 09:30:00 +08:00
validation 修复 work_dir 验证 2026-06-07 13:56:06 +08:00
app.ts 更新启动日志 2025-11-16 21:31:52 +08:00
token.ts 修改服务启动逻辑 2025-05-07 09:30:00 +08:00
tsconfig.json 修改服务启动逻辑 2025-05-07 09:30:00 +08:00