104 lines
2.7 KiB
Python
104 lines
2.7 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
依赖检查脚本
|
|
检查系统是否安装了所有必需的Python包
|
|
|
|
作者:太一
|
|
"""
|
|
|
|
import sys
|
|
import subprocess
|
|
|
|
def check_package(package_name, import_name=None):
|
|
"""检查单个包是否安装"""
|
|
if import_name is None:
|
|
import_name = package_name.replace('-', '_')
|
|
|
|
try:
|
|
__import__(import_name)
|
|
print(f"✅ {package_name:30s} - 已安装")
|
|
return True
|
|
except ImportError:
|
|
print(f"❌ {package_name:30s} - 未安装")
|
|
return False
|
|
|
|
def main():
|
|
"""主函数"""
|
|
print("=" * 60)
|
|
print("ExeProtector 依赖检查")
|
|
print("=" * 60)
|
|
print()
|
|
|
|
# 必需的包
|
|
required_packages = {
|
|
'mysql-connector-python': 'mysql.connector',
|
|
'cryptography': 'cryptography',
|
|
'requests': 'requests',
|
|
'pyperclip': 'pyperclip',
|
|
}
|
|
|
|
# 可选的包
|
|
optional_packages = {
|
|
'flask': 'flask', # 仅API服务器需要
|
|
'pyinstaller': 'PyInstaller', # 仅打包需要
|
|
}
|
|
|
|
# 检查必需包
|
|
print("检查必需依赖:")
|
|
print("-" * 60)
|
|
missing_required = []
|
|
for package, import_name in required_packages.items():
|
|
if not check_package(package, import_name):
|
|
missing_required.append(package)
|
|
|
|
print()
|
|
|
|
# 检查可选包
|
|
print("检查可选依赖:")
|
|
print("-" * 60)
|
|
missing_optional = []
|
|
for package, import_name in optional_packages.items():
|
|
if not check_package(package, import_name):
|
|
missing_optional.append(package)
|
|
|
|
print()
|
|
print("=" * 60)
|
|
|
|
# 总结
|
|
if not missing_required and not missing_optional:
|
|
print("✅ 所有依赖都已安装!")
|
|
print()
|
|
return 0
|
|
elif not missing_required:
|
|
print("✅ 所有必需依赖都已安装")
|
|
print(f"⚠️ 有 {len(missing_optional)} 个可选依赖未安装")
|
|
print()
|
|
print("如果需要安装可选依赖:")
|
|
for pkg in missing_optional:
|
|
print(f" pip install {pkg}")
|
|
print()
|
|
return 0
|
|
else:
|
|
print(f"❌ 有 {len(missing_required)} 个必需依赖未安装")
|
|
print()
|
|
print("请运行以下命令安装缺失的依赖:")
|
|
print()
|
|
print(" pip install -r requirements.txt")
|
|
print()
|
|
print("或者逐个安装:")
|
|
for pkg in missing_required:
|
|
print(f" pip install {pkg}")
|
|
print()
|
|
return 1
|
|
|
|
if __name__ == '__main__':
|
|
try:
|
|
sys.exit(main())
|
|
except KeyboardInterrupt:
|
|
print("\n\n中断执行")
|
|
sys.exit(1)
|
|
except Exception as e:
|
|
print(f"\n\n错误: {e}")
|
|
sys.exit(1)
|
|
|