一键卸载用户 pip 安装的所有 Python 包

在 Linux 共享服务器上长期使用 pip install --user 后,会积累大量用户级包。要”回到出厂状态”,可用一段小脚本一次性卸载所有用户级包。

一、卸载脚本

rm_py_pkg.sh

1
2
3
4
5
6
#!/usr/bin/env bash
# Remove all user-installed Python packages

python -m pip freeze --user > /tmp/user_pkgs.txt
python -m pip uninstall -r /tmp/user_pkgs.txt -y
rm /tmp/user_pkgs.txt

二、原理

  • pip freeze --user:列出当前用户通过 --user 安装的所有包(含版本号)
  • pip uninstall -r <list> -y:批量卸载,-y 跳过确认
  • rm /tmp/user_pkgs.txt:清掉临时文件

三、使用方法

1
2
chmod +x rm_py_pkg.sh
./rm_py_pkg.sh

输出示例:

1
2
3
4
5
6
Uninstalling numpy-1.24.3:
Would remove:
/home/user/.local/lib/python3.11/site-packages/numpy
Proceed (y/n)? y
Successfully uninstalled numpy-1.24.3
...

四、注意事项

1. 只影响用户级包

脚本只处理 --user 安装的包(即 ~/.local/lib/pythonX.Y/site-packages/),不影响:

  • 系统级包(/usr/lib/python3/dist-packages/
  • conda 环境内的包
  • pipx 管理的工具

2. 不会删 ~/.local/bin/ 中的可执行文件

如果某些 Python 工具是通过 pip install --user 装到 ~/.local/bin/,卸载包后这些脚本会失效。可手动清理:

1
2
3
4
5
# 列出用户级 bin 中所有可执行文件
ls -la ~/.local/bin/

# 仅删除 pip 安装的命令(按需)
# 例如:rm ~/.local/bin/jupyter

3. 推荐顺序

清理用户包之前先确认没有重要脚本依赖它们:

1
2
3
4
5
6
7
8
# 先看看有什么
python -m pip list --user

# 备份一份清单
python -m pip freeze --user > ~/user_pkgs_backup.txt

# 再执行清理
./rm_py_pkg.sh

4. 自定义目标环境

默认卸载当前激活的 Python 环境的用户包。如果要清理其他环境:

1
2
3
4
5
# 激活目标环境
source /path/to/venv/bin/activate

# 再跑脚本
./rm_py_pkg.sh

五、完整清理示例(含残留文件)

1
2
3
4
5
6
7
8
9
10
11
12
13
# 1. 卸载所有用户级包
./rm_py_pkg.sh

# 2. 清理用户级 bin 中残留的命令(先 ls 确认再删)
ls -la ~/.local/bin/
# rm ~/.local/bin/<command> # 按需

# 3. 清理 __pycache__
find ~/.local/lib/python*/site-packages -name "__pycache__" -type d -exec rm -rf {} + 2>/dev/null

# 4. 验证
python -m pip list --user
# 应为空或仅剩 PEP 668 标记的"系统级管理"提示

总结

rm_py_pkg.sh 是 3 行极简脚本:

  1. freeze --user 列出用户包
  2. uninstall -r 批量卸载
  3. rm 临时文件

适合定期”重置”用户 Python 环境,特别是调试依赖冲突或系统迁移时。


一键卸载用户 pip 安装的所有 Python 包
https://zhazhajust.github.io/2026/06/10/pip-user-cleanup/
作者
JayZz
发布于
2026年6月10日
许可协议