# install_dependencies.py
import sys
import subprocess
import importlib

def install_package(package):
    """安装指定的包"""
    try:
        subprocess.check_call([sys.executable, "-m", "pip", "install", package])
        print(f"✓ 成功安装 {package}")
        return True
    except subprocess.CalledProcessError:
        print(f"✗ 安装 {package} 失败")
        return False

def check_and_install_dependencies():
    """检查并安装所有必需的依赖"""
    required_packages = [
        "pandas",
        "matplotlib", 
        "seaborn",
        "numpy",
        "requests",
        "openpyxl",
        "pathlib",
        "OpenAI",
    ]
    
    print("正在检查依赖库...")
    
    missing_packages = []
    for package in required_packages:
        try:
            importlib.import_module(package)
            print(f"✓ {package} 已安装")
        except ImportError:
            print(f"✗ {package} 未安装")
            missing_packages.append(package)
    
    if missing_packages:
        print(f"\n发现 {len(missing_packages)} 个未安装的依赖库:")
        for package in missing_packages:
            print(f"  - {package}")
        
        response = input("\n是否自动安装这些依赖库？(y/n): ")
        if response.lower() in ['y', 'yes']:
            print("开始安装依赖库...")
            for package in missing_packages:
                install_package(package)
            
            # 验证安装
            print("\n验证安装...")
            all_installed = True
            for package in missing_packages:
                try:
                    importlib.import_module(package)
                    print(f"✓ {package} 安装成功")
                except ImportError:
                    print(f"✗ {package} 安装失败")
                    all_installed = False
            
            if all_installed:
                print("\n所有依赖库安装完成！")
            else:
                print("\n 部分依赖库安装失败，请手动安装")
        else:
            print("\n请手动安装缺失的依赖库:")
            print("pip install " + " ".join(missing_packages))
    else:
        print("\n 所有依赖库都已安装！")

if __name__ == "__main__":
    check_and_install_dependencies()