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

如何获取Python最新安装包列表并执行pip回滚操作?

用pip实现包安装回滚的方案

由于pip list本身不支持按安装时间排序,你可以通过以下方式获取最新安装的包并执行回滚:

1. 获取按安装时间排序的包列表

利用pip的内部API在Python脚本中提取包的安装时间并排序(注意:内部API可能随pip版本变动,建议在当前环境测试):

from pip._internal.metadata import get_default_environment
from datetime import datetime

# 获取环境内所有已安装包的元数据
env = get_default_environment()
package_info = []

for dist in env.iter_installed_distributions():
    install_time_str = dist.metadata.get("INSTALL-TIME")
    if install_time_str:
        try:
            # 转换时间格式用于排序
            install_time = datetime.fromisoformat(install_time_str.replace("Z", "+00:00"))
            package_info.append((dist.name, install_time))
        except ValueError:
            # 跳过格式异常的时间记录
            continue

# 按安装时间倒序排列,最新安装的包在前
package_info.sort(key=lambda x: x[1], reverse=True)

# 输出最新的包(示例取前10个)
print("最新安装的包:")
for name, time in package_info[:10]:
    print(f"- {name} | 安装时间:{time.strftime('%Y-%m-%d %H:%M:%S')}")

2. 批量卸载最新安装的包

确认要回滚的包后,同样通过pip内部API执行卸载操作:

from pip._internal.commands.uninstall import UninstallCommand

# 从排序结果中选取需要卸载的包名(比如前5个)
target_packages = [name for name, _ in package_info[:5]]

# 构建卸载参数,-y 自动确认无需交互
uninstall_args = ["-y"] + target_packages

# 执行卸载
uninstall_cmd = UninstallCommand(name="uninstall", summary="Uninstall packages")
uninstall_cmd.main(uninstall_args)

关键注意事项

  • 部分包可能没有记录安装时间,这类包会被跳过,需要手动排查。
  • 执行卸载前建议先导出当前包列表:pip freeze > backup_requirements.txt,方便后续恢复。
  • 确保脚本在目标Python环境(如虚拟环境)中运行,避免影响全局环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 20:42:22