马儿慢些走

人生惶惶,悲喜一场。

清理系统Python环境中误操作安装的pip包(有风险)

清理系统Python环境中误操作安装的pip包

日期:2026年01月01日

解决思路:相信系统的报错。


在使用Fedora操作系统的时候,因为重命名了文件夹名称,导致Python venv虚拟环境没有实际效果。虽然 source venv/bin/activate 进入了虚拟环境,但是python和pip都是系统默认的。在系统环境中误操作安装了很多pip包,现在想要卸载掉,但是系统自动安装的包会报错,无法直接通过:

  1. pip freeze > /tmp/requirements.txt 导出所有包的列表。
  2. pip uninstall -r /tmp/requirements.txt -y 按照列表卸载所有包。

系统安装的包会报错:

$ pip uninstall -r /tmp/uninstall_pip.txt
Found existing installation: anyio 4.11.0
error: uninstall-no-record-file

× Cannot uninstall anyio 4.11.0
╰─> The package's contents are unknown: no RECORD file was found for anyio.

hint: The package was installed by rpm. You should check if it can uninstall the package.

也有可能因为权限报错。尝试根据报错信息筛选pip包再卸载,没成功,索性直接把所有pip包都卸载一遍,直接跳过报错的包。(有风险!!!

以下代码由Kimi生成:

#!/bin/bash
# nuclear_uninstall.sh - 强力清理脚本

echo "🚀 开始强力清理pip包..."
echo "获取所有包列表..."

# 获取所有包名
python3 -m pip list --format=freeze | cut -d'=' -f1 > /tmp/all_packages.txt

echo "总共 $(wc -l < /tmp/all_packages.txt) 个包需要处理"

# 逐个卸载,跳过错误
success_count=0
fail_count=0
failed_packages=()

while read package; do
    echo "正在卸载: $package"
    if python3 -m pip uninstall -y "$package" 2>/dev/null; then
        echo "  ✅ 成功卸载 $package"
        ((success_count++))
    else
        echo "  ❌ 无法卸载 $package (可能是系统包或无权限)"
        failed_packages+=("$package")
        ((fail_count++))
    fi
done < /tmp/all_packages.txt

echo ""
echo "=== 清理完成 ==="
echo "✅ 成功卸载: $success_count 个包"
echo "❌ 跳过: $fail_count 个包"
echo ""

if [ ${#failed_packages[@]} -gt 0 ]; then
    echo "跳过的包列表:"
    for pkg in "${failed_packages[@]}"; do
        echo "  - $pkg"
    done
fi

参考输出:

正在卸载: zstandard
Found existing installation: zstandard 0.25.0
  ❌ 无法卸载 zstandard (可能是系统包或无权限)

=== 清理完成 ===
✅ 成功卸载: 0 个包
❌ 跳过: 151 个包

跳过的包列表:
  - anyio
  - apsw
  - argcomplete

posted on 2026-01-01 22:33  马儿慢些走  阅读(0)  评论(0)    收藏  举报

导航