gfhshf / auto_install_paddle.py
haaaaus's picture
Upload 25 files
41a6ed6 verified
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
PaddlePaddle Auto-Installer
===========================
This module provides automatic installation and verification of PaddlePaddle
Can be imported or run standalone
"""
import os
import sys
import subprocess
import importlib.util
import time
def check_paddle_available():
"""Check if PaddlePaddle is available"""
try:
import paddle
return True, paddle.__version__
except ImportError:
return False, None
def install_paddle_emergency():
"""Emergency PaddlePaddle installation"""
print("πŸ†˜ Emergency PaddlePaddle installation...")
try:
# Method 1: PyPI
subprocess.run([
sys.executable, "-m", "pip", "install",
"paddlepaddle==3.1.1", "--timeout", "120", "--no-cache-dir"
], check=True, timeout=180)
return True
except Exception as e:
print(f"❌ Emergency install failed: {e}")
return False
def install_paddle_robust():
"""Install using robust installer script"""
script_path = "install_paddle_robust.py"
if not os.path.exists(script_path):
print(f"⚠️ Robust installer {script_path} not found")
return False
print(f"πŸ”§ Running {script_path}...")
try:
result = subprocess.run([sys.executable, script_path],
capture_output=True, text=True, timeout=300)
if result.returncode == 0:
print("βœ… Robust installer completed successfully")
return True
else:
print(f"❌ Robust installer failed: {result.stderr[:200]}...")
return False
except Exception as e:
print(f"❌ Error running robust installer: {e}")
return False
def ensure_paddle_ready():
"""Ensure PaddlePaddle is installed and ready"""
print("πŸ” Checking PaddlePaddle availability...")
# Check if already available
available, version = check_paddle_available()
if available:
print(f"βœ… PaddlePaddle {version} is already available")
return True
print("⚠️ PaddlePaddle not found, starting installation...")
# Method 1: Try robust installer
if install_paddle_robust():
available, version = check_paddle_available()
if available:
print(f"βœ… PaddlePaddle {version} installed via robust installer")
return True
# Method 2: Emergency install
if install_paddle_emergency():
available, version = check_paddle_available()
if available:
print(f"βœ… PaddlePaddle {version} installed via emergency method")
return True
print("❌ All installation methods failed")
print("⚠️ PaddlePaddle will not be available")
return False
def auto_install_on_import():
"""Auto-install when this module is imported"""
try:
return ensure_paddle_ready()
except Exception as e:
print(f"❌ Auto-install failed: {e}")
return False
# Auto-install when imported (unless running as main)
if __name__ != "__main__":
# Only auto-install if this is being imported by another module
# and not being run directly
auto_install_on_import()
def main():
"""Main function for standalone execution"""
print("=" * 60)
print("πŸ”§ PaddlePaddle Auto-Installer")
print("=" * 60)
success = ensure_paddle_ready()
if success:
print("\n" + "=" * 60)
print("βœ… SUCCESS: PaddlePaddle is ready for use!")
# Test basic functionality
try:
import paddle
x = paddle.to_tensor([1, 2, 3])
print(f"πŸ§ͺ Basic test passed: {x}")
except Exception as e:
print(f"⚠️ Basic test failed: {e}")
print("=" * 60)
return True
else:
print("\n" + "=" * 60)
print("❌ FAILURE: Could not install PaddlePaddle")
print("Please check:")
print("1. Internet connectivity")
print("2. Python and pip installation")
print("3. Available disk space")
print("4. System permissions")
print("=" * 60)
return False
if __name__ == "__main__":
success = main()
sys.exit(0 if success else 1)