qinglong/shell
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
..
preload 修复内部服务 ip 地址 2026-06-01 18:28:54 +08:00
api.sh 修复任务统计日志 2026-06-07 15:15:12 +08:00
bot.sh 修复非 root debian dockerfile 2026-05-30 23:55:57 +08:00
check.sh 修复内部服务 ip 地址 2026-06-01 18:28:54 +08:00
dev-env.sh feat: 支持 Python venv 隔离环境,适配 Node.js 原生部署 2026-06-07 21:03:51 +08:00
env.sh fs 文件操作替换为 fs.promise 2023-11-01 16:44:34 +08:00
otask.sh 修复任务统计日志 2026-06-07 15:15:12 +08:00
pub.sh 统一 Alpine/Debian 分支,QL_SCHEDULER 参数化调度 2026-05-30 18:03:51 +08:00
rmlog.sh 修复删除日志命令 2024-08-24 22:43:09 +08:00
share.sh 增加任务统计 2026-06-01 18:20:18 +08:00
start-simplify.sh feat: 支持 Python venv 隔离环境,适配 Node.js 原生部署 2026-06-07 21:03:51 +08:00
start.sh feat: 支持 Python venv 隔离环境,适配 Node.js 原生部署 2026-06-07 21:03:51 +08:00
task.sh 修复日志目录逻辑 2025-11-09 21:42:45 +08:00
update.sh Fix QlPort and QlGrpcPort environment variables ignored in host network mode and pm2 reload (#2825) 2025-11-14 22:56:39 +08:00