#!/usr/bin/env python3 """ 安全安装PyQt5的脚本,避免平台插件问题 """ import subprocess import sys import os def install_pyqt5_safely(): """安全安装PyQt5的方法""" print("正在安全安装PyQt5...") # 1. 首先完全卸载现有的PyQt5 print("1. 卸载现有PyQt5...") subprocess.run([sys.executable, "-m", "pip", "uninstall", "PyQt5", "PyQt5-Qt5", "PyQt5-sip", "-y"], capture_output=True, text=True) # 2. 清理可能残留的文件 print("2. 清理残留文件...") venv_path = os.environ.get('VIRTUAL_ENV', '') if venv_path: site_packages = os.path.join(venv_path, 'lib', f'python{sys.version_info.major}.{sys.version_info.minor}', 'site-packages') if os.path.exists(site_packages): for item in os.listdir(site_packages): if 'pyqt5' in item.lower(): item_path = os.path.join(site_packages, item) if os.path.isdir(item_path): import shutil shutil.rmtree(item_path) print(f" 删除目录: {item}") # 3. 使用特定版本安装PyQt5 print("3. 安装PyQt5...") result = subprocess.run([ sys.executable, "-m", "pip", "install", "PyQt5==5.15.10", "--no-cache-dir", # 不使用缓存,确保重新下载 "--force-reinstall" # 强制重新安装 ], capture_output=True, text=True) if result.returncode == 0: print("✅ PyQt5安装成功!") # 4. 验证安装 print("4. 验证安装...") test_result = subprocess.run([ sys.executable, "-c", "from PyQt5.QtWidgets import QApplication; print('PyQt5导入成功')" ], capture_output=True, text=True) if test_result.returncode == 0: print("✅ PyQt5验证通过!") return True else: print("❌ PyQt5验证失败:", test_result.stderr) return False else: print("❌ PyQt5安装失败:", result.stderr) return False if __name__ == "__main__": success = install_pyqt5_safely() sys.exit(0 if success else 1)