Skip to content

feat: 支持 Python venv 隔离环境,适配 Node.js 原生部署#3009

Open
jiandanc wants to merge 1 commit into
whyour:developfrom
jiandanc:develop
Open

feat: 支持 Python venv 隔离环境,适配 Node.js 原生部署#3009
jiandanc wants to merge 1 commit into
whyour:developfrom
jiandanc:develop

Conversation

@jiandanc

@jiandanc jiandanc commented Jun 7, 2026

Copy link
Copy Markdown

背景

原方案使用系统 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(向后兼容)

PR Type

What kind of change does this PR introduce?

  • Bugfix
  • Feature
  • Code style update (formatting, local variables)
  • Refactoring (no functional changes, no api changes)
  • Other... Please describe:

What is the current behavior?

Issue Number: N/A

What is the new behavior?

Does this PR introduce a breaking change?

  • Yes
  • No

Other information

## 背景
原方案使用系统 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(向后兼容)
@vercel

vercel Bot commented Jun 7, 2026

Copy link
Copy Markdown

@jiandanc is attempting to deploy a commit to the hunter wang's projects Team on Vercel.

A member of the Team first needs to authorize it.

@vercel

vercel Bot commented Jun 10, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
qinglong Ready Ready Preview, Comment Jun 10, 2026 4:30pm
qinglong-back Ready Ready Preview, Comment Jun 10, 2026 4:30pm

@whyour

whyour commented Jun 10, 2026

Copy link
Copy Markdown
Owner

nodejs 原生部署用 npm i @whyour/qinglong 是不是可以

@whyour whyour force-pushed the develop branch 4 times, most recently from 23124c2 to b5a5fb3 Compare June 14, 2026 13:19
@jiandanc

Copy link
Copy Markdown
Author

nodejs 原生部署用 npm i @whyour/qinglong 是不是可以

可以的,主要问题是qinglong nom安装默认是使用的系统的python环境,可能会污染环境和存在包冲突

@whyour

whyour commented Jun 16, 2026

Copy link
Copy Markdown
Owner

nodejs 原生部署用 npm i @whyour/qinglong 是不是可以

可以的,主要问题是qinglong nom安装默认是使用的系统的python环境,可能会污染环境和存在包冲突

那我理解可以改下,

  1. 增加创建 venv
  2. 增加 simple start 不安装依赖启动?把命令写到 package.json 就行,也不需要 dev-env,目前的 start.sh 调用 simple start 就行,PYTHON_VENV_DIR 需要手动设置

@whyour whyour force-pushed the develop branch 4 times, most recently from 0aaaee2 to 2f7b6e3 Compare June 21, 2026 15:53
@whyour whyour force-pushed the develop branch 6 times, most recently from 953b68f to f09ef37 Compare July 1, 2026 16:10
@whyour whyour force-pushed the develop branch 2 times, most recently from 39058bb to 23a1835 Compare July 4, 2026 13:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants