| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- #!/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()
|