#!/usr/bin/env python # -*- coding: utf-8 -*- """ 升级所有已安装的Python包到最新版本 """ import subprocess import sys def upgrade_all_packages(): """升级所有已安装的包""" # 获取所有已安装的包 result = subprocess.run( [sys.executable, '-m', 'pip', 'list', '--format=freeze'], capture_output=True, text=True, encoding='utf-8' ) if result.returncode != 0: print(f"错误: 无法获取包列表\n{result.stderr}") return packages = [] for line in result.stdout.strip().split('\n'): if line and '==' in line: package_name = line.split('==')[0].strip() if package_name and package_name != 'pip': packages.append(package_name) print(f"Found {len(packages)} packages to check for upgrades...") # 升级每个包 upgraded = 0 failed = 0 for i, package in enumerate(packages, 1): print(f"\n[{i}/{len(packages)}] Upgrading {package}...") result = subprocess.run( [sys.executable, '-m', 'pip', 'install', '--upgrade', package], capture_output=True, text=True, encoding='utf-8' ) if result.returncode == 0: print(f"[OK] {package} upgraded successfully") upgraded += 1 else: print(f"[FAIL] {package} upgrade failed: {result.stderr[:200]}") failed += 1 print(f"\n{'='*60}") print(f"Upgrade completed!") print(f"Success: {upgraded} packages") print(f"Failed: {failed} packages") print(f"{'='*60}") if __name__ == '__main__': upgrade_all_packages()