应设置TMPDIR环境变量指向大容量本地目录,因pip默认使用/tmp(常为小容量tmpfs)存放解压和编译临时文件,导致“No space left on device”错误,而实际磁盘仍有空间。

pip install 时提示 No space left on device 怎么办
不是 pip 本身出了问题,而是系统临时目录(通常是 /tmp)所在分区满了。pip 在下载、解压、构建过程中会大量写入临时文件,哪怕你目标安装路径磁盘充足,/tmp 满了照样失败。
怎么查是不是 /tmp 真的满了
直接运行命令确认:
df -h /tmp
如果显示使用率 100% 或剩余几 MB,基本就是它。注意:有些系统 /tmp 是内存挂载(tmpfs),大小受 RAM 限制,默认可能只有几百 MB —— 下载大包(如 torch、tensorflow)很容易撑爆。
- 用
mount | grep tmp看/tmp是否是 tmpfs 类型 - 用
du -sh /tmp/pip*查看 pip 临时文件占了多少空间(常驻残留) - 别只看
df -h根分区,要盯准/tmp所在挂载点
临时绕过 /tmp 的三种实操方式
不用改系统配置,立刻生效:
立即学习“Python免费学习笔记(深入)”;
- 用
--no-cache-dir避免缓存写入:pip install --no-cache-dir package_name - 指定其他临时目录(需有写权限):
TMPDIR=/path/to/big/disk pip install package_name - 组合使用更稳妥:
TMPDIR=/home/user/tmp pip install --no-cache-dir --build /home/user/tmp package_name
--build 参数指定构建目录(尤其对需要编译的包有效),--no-cache-dir 关掉 pip 缓存机制,两者配合能大幅减少临时空间占用。
长期解决:调整 pip 默认行为或系统 tmpfs 大小
如果频繁遇到,说明当前设置不适合你的工作流:
- 永久设置 pip 临时目录:在
~/.pip/pip.conf(Linux/macOS)或%APPDATA%\pip\pip.ini(Windows)中加:[global]<br>cache-dir = /home/user/.pip_cache<br>temp-dir = /home/user/tmp
- 增大 tmpfs(仅限 Linux):修改
/etc/fstab中tmpfs行,比如把size=512M改成size=2G,然后sudo mount -o remount /tmp - 定期清理:
pip cache info查位置,pip cache purge清缓存;手动删/tmp/pip-*目录(确保没其他 pip 进程在跑)
真正卡住人的往往不是磁盘总容量,而是 /tmp 这个“隐形瓶颈”——尤其在 Docker 容器、CI 环境或小内存 VPS 上,它默认太小又容易被忽略。


















