fix(terminal): 移除命令执行前的 python/pip 路径重写,按用户原始命令执行

run_command 与后台 run_command 此前会把命令中的 python/python3/pip/pip3 正则替换为解析出的容器或本地解释器路径,删除该重写逻辑后命令按原样执行。
This commit is contained in:
JOJO 2026-07-20 15:51:21 +08:00
parent 0dd51c7b48
commit bfc039a9a9
2 changed files with 0 additions and 23 deletions

View File

@ -3,7 +3,6 @@
from __future__ import annotations from __future__ import annotations
import os import os
import re
import shutil import shutil
import signal import signal
import subprocess import subprocess
@ -61,14 +60,7 @@ class BackgroundCommandManager:
if not getattr(terminal_ops, "container_session", None): if not getattr(terminal_ops, "container_session", None):
session_override = terminal_ops._resolve_active_container_session() session_override = terminal_ops._resolve_active_container_session()
execution_in_container = terminal_ops._will_use_container(session_override)
python_rewrite = terminal_ops.container_python_cmd if execution_in_container else terminal_ops.python_cmd
pip_rewrite = terminal_ops._derive_pip_from_python(python_rewrite)
final_command = command final_command = command
if re.search(r"\bpython3?\b", final_command):
final_command = re.sub(r"\bpython3?\b", python_rewrite, final_command)
if re.search(r"(?<![/.\w-])pip3?\b", final_command):
final_command = re.sub(r"(?<![/.\w-])pip3?\b", pip_rewrite, final_command)
valid, error = terminal_ops._validate_command(final_command) valid, error = terminal_ops._validate_command(final_command)
if not valid: if not valid:

View File

@ -7,7 +7,6 @@ import subprocess
import shutil import shutil
import time import time
import signal import signal
import re
from pathlib import Path from pathlib import Path
from typing import Dict, Optional, Tuple, TYPE_CHECKING from typing import Dict, Optional, Tuple, TYPE_CHECKING
from types import SimpleNamespace from types import SimpleNamespace
@ -410,20 +409,6 @@ class RunMixin:
session_override = None session_override = None
if not self.container_session: if not self.container_session:
session_override = self._resolve_active_container_session() session_override = self._resolve_active_container_session()
# 判断本次应在容器中执行:已绑定容器会话、复用终端容器或将使用工具箱容器
execution_in_container = self._will_use_container(session_override)
python_rewrite = self.container_python_cmd if execution_in_container else self.python_cmd
pip_rewrite = self._derive_pip_from_python(python_rewrite)
# 命令通过 ssh 在远程主机执行时,本地 Python/pip 路径对远程不适用,跳过重写
is_remote_ssh = command.lstrip().startswith("ssh ") or re.search(r"[;&|]\s*ssh\s", command) is not None
if not is_remote_ssh:
# 统一替换 python/python3为保障虚拟环境命中只替换独立单词
if re.search(r"\bpython3?\b", command):
command = re.sub(r"\bpython3?\b", python_rewrite, command)
# 同步替换 pip/pip3确保指向同一环境
if re.search(r"(?<![/.\w-])pip3?\b", command):
command = re.sub(r"(?<![/.\w-])pip3?\b", pip_rewrite, command)
# 验证命令 # 验证命令
valid, error = self._validate_command(command) valid, error = self._validate_command(command)
if not valid: if not valid: