uv 默认自动激活虚拟环境会干扰开发,需禁用:一是在配置文件中设 auto-activate = false;二是删除 shell hook 并重载配置;三是临时执行 unset uv_auto_activate。

使用 uv 创建虚拟环境后,它会默认在进入项目目录时自动激活环境,导致终端提示符变化、Python 解释器和 pip 指向虚拟环境内路径,干扰本地开发流程或跨环境调试。要彻底禁用该行为,需修改 uv 的配置文件或覆盖其 shell hook 注入逻辑。
检查当前是否启用了 auto-activate
运行 uv python list --show-config,观察输出中是否包含 auto-activate = true;若未显示该行,则说明当前未启用,跳过后续步骤。
方法一:通过配置文件禁用
找到或创建 uv 配置文件:~/.config/uv/uv.toml(Linux/macOS)或 %APPDATA%\uv\uv.toml(Windows)。
在文件中写入以下内容并保存:
[python]auto-activate = false
这一步会全局关闭 uv 的自动激活功能,适用于所有项目。⚠️ 注意:若该文件已存在且含其他配置,只需在 [python] 段落下添加或修改 auto-activate = false 行,不要删除原有配置。
方法二:卸载 shell hook(推荐用于已生效的终端)
uv 依赖 shell hook 实现自动激活,hook 通常注入在 ~/.bashrc、~/.zshrc 或 ~/.profile 中。
第一步:确认 hook 是否存在 → 运行 grep -n "uv activate" ~/.zshrc 2>/dev/null || grep -n "uv activate" ~/.bashrc 2>/dev/null。
第二步:若返回类似 123:eval "$(uv activate --shell zsh)" 的结果,用文本编辑器打开对应文件,删除该行。
第三步:重新加载 shell 配置 → 执行 source ~/.zshrc(或 source ~/.bashrc)。
【必须执行第三步,否则终端仍会按旧 hook 行为触发激活】
方法三:临时绕过(单次会话有效)
在当前终端中运行 unset UV_AUTO_ACTIVATE。
该变量由 uv 的 hook 脚本设置,清除后本次会话不再自动激活。但关闭终端后失效,不解决根本问题。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











