venv 中的 site-packages 目录位于虚拟环境根目录下的 lib/pythonx.y/site-packages(linux/macos)或 lib\site-packages(windows);例如 myenv 创建后即为 myenv/lib/python3.12/site-packages 或 myenv\lib\site-packages,该路径与系统全局 site-packages 完全隔离。

venv 中的 site-packages 目录在哪
虚拟环境里的包,全部装在 lib/pythonX.Y/site-packages 下(Linux/macOS)或 Lib\site-packages 下(Windows),路径根目录就是你创建的虚拟环境文件夹本身。比如用 python -m venv myenv 创建后,包就放在:
- Linux/macOS:
myenv/lib/python3.12/site-packages/ - Windows:
myenv\Lib\site-packages\
这个位置和全局 Python 的 site-packages 完全隔离——哪怕你全局装了 requests==2.31.0,myenv 里没装,就根本 import 不到。
怎么快速确认当前环境的 site-packages 路径
别猜,直接让 Python 告诉你。激活虚拟环境后,在终端运行:
python -c "import site; print(site.getsitepackages())"
输出类似 ['/path/to/myenv/lib/python3.12/site-packages'] 就是准确路径。注意:
- 如果没激活,它会返回全局环境的路径
- 某些旧版 Python 或特殊构建可能返回多个路径,但第一个才是主
site-packages - 也可以用
python -m site查更全的信息,包括USER_SITE是否启用
为什么有时候 pip install 看似成功却 import 失败
常见原因是:没激活虚拟环境,或者 VSCode 自动激活失效后你手动开了新终端但忘了 source。此时 pip install 实际装到了全局 site-packages,而 python 运行时却用的是虚拟环境解释器(不认全局包)。
验证方法:
- 运行
which python(macOS/Linux)或where python(Windows),看路径是否指向myenv/bin/python或myenv\Scripts\python.exe - 运行
pip show some_package,检查Location:行是否在虚拟环境路径下 - 运行
python -c "import sys; print('\n'.join(sys.path))",确认第一项是虚拟环境的site-packages上级目录
删除包或重装时,别碰错目录
有人想“手动删包”,直接进 site-packages 里 rm -rf 某个文件夹。这容易出问题:
- 包可能有 .dist-info 或 .egg-info 元数据目录,删不全会导致
pip list显示异常 - 依赖关系不会自动清理,下次
pip install可能跳过已“残留”的包 - 正确做法永远是
pip uninstall package_name或pip install --force-reinstall
真正要彻底清理,直接删整个虚拟环境文件夹最安全——因为 site-packages 本就不该被单独维护,它是 venv 的一部分,生命周期应与环境一致。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











