--no-cache-dir 最直接禁用 pip 缓存,跳过下载阶段写入本地缓存目录,仅影响新下载行为,不清理已安装包或已有缓存;需配合 --force-reinstall 才能确保重装指定版本。

pip install --no-cache-dir 是最直接的禁用方式
它让 pip 完全跳过下载后写入本地缓存目录(如 ~/.cache/pip)这一步,所有包都只在内存中临时解压、安装,不落地。适用于单次构建、CI/CD、低磁盘空间环境。
常见误操作是只加 --no-cache-dir 却没配合 --force-reinstall,结果旧版本仍被复用——因为 --no-cache-dir 不影响已安装的包,只管“下载阶段”。
- 正确组合:
pip install --no-cache-dir --force-reinstall requests - Windows 用户注意:CMD 中若混用重定向符号(如
>=2.28),必须用引号包裹版本约束,否则报错 - 该参数对编译型包(如
numpy、torch)无效于编译内存占用,仅减少缓存 I/O 压力
用环境变量 PIP_NO_CACHE_DIR 全局禁用
设置 PIP_NO_CACHE_DIR=1 后,所有后续 pip install 命令自动带上 --no-cache-dir,无需每次敲参数。适合 Dockerfile 或 CI 脚本统一控制。
但要注意:它只影响 pip 行为,不影响 setuptools 或 wheel 构建过程自身的临时目录;且不会清理已有缓存,只是让新安装不写入。
- Linux/macOS:
export PIP_NO_CACHE_DIR=1 - Windows CMD:
set PIP_NO_CACHE_DIR=1 - 错误写法:
PIP_CACHE_DIR=/dev/null——会触发 pip 内部路径校验失败,直接报错退出
Docker 构建中必须合并缓存清理到同一 RUN 指令
在 Dockerfile 里,--no-cache-dir 只禁用本次安装的缓存写入,但镜像层仍可能残留之前构建留下的 /root/.cache/pip。如果不显式删除,体积虚增几百 MB 到几 GB。
关键点在于:Docker 每个 RUN 是独立层,跨层删除无效。必须链式执行,确保安装和清理发生在同一层。
- 推荐写法(root 用户):
RUN pip install --no-cache-dir -r requirements.txt && rm -rf /root/.cache/pip - 非 root 用户(如
USER app)需改路径:rm -rf /home/app/.cache/pip - Alpine 镜像慎用:
--no-cache-dir会阻止 wheel 复用,若无预编译包,反而触发本地编译失败;应先apk add gcc musl-dev,再允许缓存,最后pip cache purge
pip cache purge 和 pip cache remove 的适用边界
pip cache purge 清空全部缓存,pip cache remove package_name 只删指定包——它们和 --no-cache-dir 是不同维度的操作:前者清理“已有”,后者预防“新增”。
容易混淆的是,pip cache remove 不影响已安装的包,只删下载好的 .whl 或 .tar.gz 文件;而 --force-reinstall 才真正触发重新安装逻辑。
- 查缓存位置:
pip cache dir - 看缓存内容:
pip cache info(显示大小、条目数) - 删特定包(含所有版本):
pip cache remove requests - 删特定版本:
pip cache remove requests==2.28.1
conda clean --all -y。











