请在终端中执行以下命令,将这段逻辑追加到你的配置文件末尾:
cat >> ~/.bashrc << 'EOF'
# --- 自动激活 Python 虚拟环境逻辑开始 ---
# 逻辑:进入含 .venv 的目录自动激活,离开项目根目录自动退出
auto_venv_activate() {
# 定义虚拟环境目录名,可根据需要添加 "venv"
local venv_names=(".venv" "venv")
local found_venv=""
# 1. 检查当前目录下是否存在虚拟环境
for name in "${venv_names[@]}"; do
if [ -d "$PWD/$name" ] && [ -f "$PWD/$name/bin/activate" ]; then
found_venv="$PWD/$name/bin/activate"
break
fi
done
# 2. 如果找到了虚拟环境且当前未激活,则激活它
if [ -n "$found_venv" ]; then
if [ "$VIRTUAL_ENV" != "${found_venv%/bin/activate}" ]; then
source "$found_venv"
fi
# 3. 如果当前已激活,但所在目录已不再是该虚拟环境的根目录(或其子目录),则退出
elif [ -n "$VIRTUAL_ENV" ]; then
# 检查当前路径是否依然在已激活环境的父级目录内
if [[ "$PWD" != "${VIRTUAL_ENV%/*}"* ]]; then
deactivate
fi
fi
}
# 使用 PROMPT_COMMAND 在每次显示提示符前运行,比改写 cd 更稳健(支持 pushd/popd)
export PROMPT_COMMAND="auto_venv_activate;$PROMPT_COMMAND"
# --- 自动激活逻辑结束 ---
EOF
# 立即刷新配置使其生效
source ~/.bashrc