根本原因在于命令未真正作用于虚拟环境的解释器和工具链。激活脚本仅修改PATH,若被覆盖或绕过,python/pip仍调用全局路径;VS Code解释器设置不影响终端行为;复制venv会导致硬编码路径残留;务必确保which python和python -c "import sys; print(sys.prefix)"均指向venv路径。

根本原因不是环境“坏了”,而是命令没真正落到虚拟环境的解释器和工具链上。 激活脚本只是修改了 PATH,如果这个修改被覆盖、忽略或绕过,python 和 pip 仍会调用全局路径下的可执行文件。
终端提示符显示 (myenv) 但 which python 还是全局路径
这说明激活脚本看似运行成功,但 PATH 未被正确前置。常见于:
- PowerShell 执行策略阻止
Activate.ps1生效(即使没报错,脚本也未执行)——必须先运行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser - shell 配置文件(如
.zshrc)里定义了python或pip别名/函数,覆盖了 PATH 查找逻辑;可用type python和type pip检查 - VS Code 终端启动时未加载 shell 配置,导致
source venv/bin/activate后 PATH 仍被后续配置重写;建议在 VS Code 中配置"terminal.integrated.env.linux": {"PATH": "${env:HOME}/myenv/bin:${env:PATH}"}类似逻辑
pip install 装的包在 pip list 里看不到,但 pip show xxx 显示路径是另一个项目的 .venv
这是虚拟环境被复制(而非重建)导致的硬编码路径残留。所有 venv 内部脚本(包括 pip、activate)都写死了创建时的绝对路径。一旦复制到新目录,pip 仍会把包装回原始路径的 site-packages。
让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限
- 不要复制
.venv文件夹——直接在新项目根目录下重新运行python -m venv .venv - 若已复制,删除整个副本,再重建;
--clear参数不是万能的,它只清当前目录,不修复路径硬编码 - 验证方式:查看
.venv/bin/pip(Linux/macOS)或.venv/Scripts/pip.exe(Windows)文件头,里面会明文写有 Python 解释器路径
VS Code 右下角显示了虚拟环境解释器,但终端里 pip install 还是装到全局
VS Code 的「Python Interpreter」设置只影响编辑器功能(补全、跳转、调试),**不影响集成终端默认行为**。终端启动时仍是干净 shell,不会自动激活任何环境。
立即学习“Python免费学习笔记(深入)”;
- 必须在集成终端中手动运行
source .venv/bin/activate(macOS/Linux)或.venv\Scripts\activate.bat(Windows CMD) - 更可靠的做法:在项目根目录的
.vscode/settings.json中添加"python.defaultInterpreterPath": "./.venv/bin/python",并配合终端启动脚本自动激活(如在settings.json中配置"terminal.integrated.profiles.linux"启动时执行 source) - 检查终端是否真的用了你选的解释器:运行
python -c "import sys; print(sys.prefix)",输出应为.venv目录路径,而非/usr或C:\PythonXX
最易被忽略的一点:python -m pip install xxx 看似安全,但如果 python 命令本身没指向虚拟环境(即 which python 是错的),那 -m pip 依然会调用全局 pip 的模块。路径对不上,一切隔离都归零。

















