You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pip 20.X版本修改构建目录失败:TMPDIR未生效问题求助

问题背景与现象

我使用的是pip 20.X及以上版本,该版本的install命令已移除--build选项。由于Jenkins的/tmp清理插件偶尔会在安装中途清理/tmp目录,我需要修改pip的构建临时目录(请勿建议禁用该插件)。

根据文档说明,设置TMPDIR环境变量可指定构建目录,但启用verbose模式后,仍看到req-tracker和解压文件夹使用/tmp路径。我的操作脚本如下:

VENV=$(mktemp -d venv.XXXXXXX)
python -m venv $VENV
. $VENV/bin/activate
export TMPDIR=$VENV/build
python -m pip install --verbose -r requirements.txt

任务终止后,/tmp下仍生成了pip的临时文件夹:

$ lt /tmp/
total 116
drwx------ 47 dom.larosa dom.larosa  4096 Feb 17 06:54 pip-build-sx9op49f
drwx------  2 dom.larosa dom.larosa  4096 Feb 17 06:54 pip-3at9dsy4-record

而指定的$VENV/build目录不存在,也无任何内容:

$ lt $VENV/build
ls: cannot access 'venv.WFWImFB/build': No such file or directory
问题原因
  1. 指定的临时目录未创建:pip不会自动创建TMPDIR指向的目录,如果该目录不存在,pip会 fallback 到系统默认的/tmp目录。
  2. 部分临时文件受专属环境变量控制:req-tracker相关的临时文件并非完全由TMPDIR控制,单独设置TMPDIR无法覆盖这部分文件的存储路径。
解决方法

修改脚本,先创建指定的临时目录,同时补充设置PIP_REQ_TRACKER环境变量,确保所有pip临时文件都存到目标路径:

VENV=$(mktemp -d venv.XXXXXXX)
python -m venv $VENV
. $VENV/bin/activate
# 先创建目标临时目录,确保路径存在
mkdir -p $VENV/build
# 设置TMPDIR控制通用临时文件
export TMPDIR=$VENV/build
# 设置PIP_REQ_TRACKER控制req-tracker相关临时文件
export PIP_REQ_TRACKER=$VENV/build/pip-tracker
python -m pip install --verbose -r requirements.txt

验证效果

运行修改后的脚本后,查看$VENV/build目录,会发现pip生成的所有临时文件夹(包括build目录、req-tracker目录)都存放在此处,/tmp下不会再生成相关的pip临时文件。

内容的提问来源于stack exchange,提问作者Dom LaRosa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 05:03:36