前言
日常开发中经常遇到离线部署、多机器统一环境、打包依赖的场景,很多人分不清几个关键路径:
pip install xxx在线下载的 whl 缓存在哪?- 浏览器手动下载的 whl 放在哪?
- 安装过程临时解压目录在哪?
- 包安装完成后代码存在哪里?
- 虚拟环境会不会单独缓存 whl?
本文全平台覆盖 windows / macos / linux,附带查询、清理、迁移缓存全套实操命令,解决离线打包、c盘爆满、重复下载等常见痛点。
一、核心:pip 全局缓存目录(在线下载的 whl 永久存放处)
1. 全系统默认缓存路径
pip 缓存是用户级全局目录,所有 python、所有虚拟环境共用一套缓存,不会重复下载相同版本whl。
| 操作系统 | 缓存根目录 | whl包存放子目录 |
|---|---|---|
| windows | %localappdata%\pip\cache | %localappdata%\pip\cache\wheels |
| macos | ~/library/caches/pip | ~/library/caches/pip/wheels |
| linux | ~/.cache/pip | ~/.cache/pip/wheels |
windows 快速打开方式
win+r 输入路径直达:
%localappdata%\pip\cache
appdata 是系统隐藏文件夹,不要手动一层层找,直接粘贴地址栏打开。
2. 一键查询本机真实缓存路径(通用命令,推荐)
无论什么系统、是否激活虚拟环境,终端执行:
pip cache dir
示例 windows 输出:
c:\users\administrator\appdata\local\pip\cache
3. 缓存目录两个核心子文件夹
wheels:所有在线下载成功的.whl预编译包永久保存在这里,下次安装同一版本直接读取本地,不走网络;http-v2:pypi 索引页面、源码压缩包(tar.gz/zip)缓存,不存放whl;
关键区分:在线下载 vs 本地手动whl
pip install numpy在线拉取 → 自动存入全局缓存wheels;pip install d:\whl\numpy-1.21.6-cp310-win_amd64.whl本地离线文件安装 → 不会存入pip缓存。
二、四类容易混淆的 whl 相关路径详解
路径1:浏览器手动下载的whl文件
不属于pip管理,仅存在浏览器默认下载文件夹:
- windows:
c:\users\administrator\downloads - macos:
~/downloads - linux:
~/downloads
特点:不会自动缓存,离线部署需要手动复制备份。
路径2:安装时临时解压目录(安装完成自动删除)
pip安装过程会把whl解压到系统临时目录,用于编译、复制文件,安装成功后自动清空;安装失败会残留临时文件。
- windows:
c:\users\administrator\appdata\local\temp\pip-wheel-xxxx - macos/linux:
/tmp/pip-wheel-xxxx
报错日志里出现的临时路径都属于这里,无需手动备份。
路径3:包安装完成后的代码存放目录(site-packages)
很多人混淆“下载的whl包”和“安装后的代码文件”:
whl是压缩安装包,安装后会解压复制到python库目录,原始whl缓存还在cache文件夹。
原生全局python(windows)
c:\users\administrator\appdata\local\programs\python\python310\lib\site-packages
虚拟环境 venv_detayun_env
e:\python_env\venv_detayun_env\lib\site-packages
macos/linux 全局
/usr/local/lib/python3.10/site-packages
查询单个包安装位置命令:
pip show numpy
路径4:虚拟环境是否独立缓存whl?
不独立!
虚拟环境仅隔离 site-packages 已安装代码,下载缓存统一使用当前系统用户的全局pip cache,多虚拟环境共用whl缓存,大幅节省带宽与磁盘。
三、pip缓存全套管理命令(实用开发必备)
1. 查看缓存占用、包统计
pip cache info
输出缓存总大小、wheel数量、索引缓存信息。
2. 列出缓存里所有whl文件路径
pip cache list # 输出绝对路径格式 pip cache list --format abspath
3. 清理单个包缓存(比如删除dlib所有缓存whl)
pip cache remove dlib
4. 一键清空全部缓存(解决c盘爆满、缓存损坏报错)
pip cache purge
适用场景:缓存文件损坏导致编码报错、磁盘空间不足、切换离线环境前清理无用包。
5. 安装时不使用本地缓存,强制重新下载
pip install torch==1.13.1+cu116 --no-cache-dir
适合缓存文件残缺、版本错乱的修复场景。
四、离线部署实用技巧:批量导出缓存whl
如果需要内网离线打包,直接从缓存目录复制wheels文件夹,或用命令批量下载所有依赖whl:
# 在项目根目录,下载所有依赖whl到本地文件夹 pip download -r requirements.txt -d ./whl_cache
下载后的文件全部保存在当前目录 whl_cache,可拷贝到无网络机器离线安装。
五、常见踩坑答疑
q1:安装dlib、mysqlclient报gbk编码错误,和缓存有关吗?
a:无关。这类报错是源码编译流程读取cmake文件编码异常,不是缓存whl问题;解决方案直接安装预编译whl二进制包,不走源码构建流程。
q2:更换windows用户后找不到之前下载的whl?
a:pip缓存按用户隔离,每个windows账户拥有独立 %localappdata%\pip\cache,切换用户缓存不互通。
q3:c盘空间越来越大,能不能直接删除cache文件夹?
a:完全可以,执行 pip cache purge 安全清理,不会影响已安装的python库,只是下次安装需要重新下载对应whl。
q4:requirements.txt里带+cu116的torch包,缓存找不到?
a:带cuda后缀的包仅存在pytorch官方仓库,清华源无缓存,必须附加 --extra-index-url 参数安装才能正常缓存。
六、总结
- 在线
pip install下载的whl永久缓存:windows%localappdata%\pip\cache\wheels; - 本地手动whl、浏览器下载文件不属于pip缓存,需自行备份;
- 临时解压目录安装完成自动删除,无需管理;
- 虚拟环境共用全局缓存,仅隔离已安装代码;
pip cache dir/pip cache purge两条命令覆盖90%缓存管理场景;- 离线部署优先使用
pip download批量导出whl,避免手动复制缓存文件夹遗漏。
到此这篇关于python pip缓存之whl文件路径解析的文章就介绍到这了,更多相关python whl文件路径内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论