|
|
|
"""
|
|
Setup script for MMOP Second Try
|
|
Installs dependencies and verifies the installation
|
|
"""
|
|
|
|
import subprocess
|
|
import sys
|
|
import os
|
|
from pathlib import Path
|
|
|
|
def run_command(command, description):
|
|
"""Run a command and handle errors"""
|
|
print(f"\n{'='*50}")
|
|
print(f"🔧 {description}")
|
|
print(f"{'='*50}")
|
|
|
|
try:
|
|
result = subprocess.run(command, shell=True, check=True, capture_output=True, text=True)
|
|
print(f"✅ {description} completed successfully")
|
|
if result.stdout:
|
|
print(f"Output: {result.stdout}")
|
|
return True
|
|
except subprocess.CalledProcessError as e:
|
|
print(f"❌ {description} failed")
|
|
print(f"Error: {e.stderr}")
|
|
return False
|
|
|
|
def check_python_version():
|
|
"""Check if Python version is suitable"""
|
|
print(f"🐍 Python version: {sys.version}")
|
|
if sys.version_info < (3, 8):
|
|
print("❌ Python 3.8 or higher is required")
|
|
return False
|
|
print("✅ Python version is compatible")
|
|
return True
|
|
|
|
def install_dependencies():
|
|
"""Install dependencies from requirements.txt"""
|
|
requirements_file = Path("requirements.txt")
|
|
if not requirements_file.exists():
|
|
print("❌ requirements.txt not found")
|
|
return False
|
|
|
|
return run_command(
|
|
f"{sys.executable} -m pip install -r requirements.txt",
|
|
"Installing dependencies"
|
|
)
|
|
|
|
def verify_installation():
|
|
"""Verify that key components can be imported"""
|
|
print(f"\n{'='*50}")
|
|
print("🔍 Verifying installation")
|
|
print(f"{'='*50}")
|
|
|
|
tests = [
|
|
("import gradio", "Gradio UI framework"),
|
|
("import numpy", "NumPy"),
|
|
("import pandas", "Pandas"),
|
|
("from src.facades.game_facade import GameFacade", "Game Facade"),
|
|
("from src.mcp.mcp_tools import GradioMCPTools", "MCP Tools"),
|
|
("from app import MMORPGApplication", "Main Application"),
|
|
]
|
|
|
|
all_passed = True
|
|
for test_import, description in tests:
|
|
try:
|
|
exec(test_import)
|
|
print(f"✅ {description}")
|
|
except ImportError as e:
|
|
print(f"❌ {description}: {e}")
|
|
all_passed = False
|
|
except Exception as e:
|
|
print(f"⚠️ {description}: {e}")
|
|
|
|
return all_passed
|
|
|
|
def main():
|
|
"""Main setup function"""
|
|
print("🎮 MMOP Second Try - Setup Script")
|
|
print("=" * 50)
|
|
|
|
|
|
if not check_python_version():
|
|
sys.exit(1)
|
|
|
|
|
|
if not install_dependencies():
|
|
print("\n❌ Dependency installation failed")
|
|
sys.exit(1)
|
|
|
|
|
|
if not verify_installation():
|
|
print("\n⚠️ Some components failed verification, but you can still try running the application")
|
|
else:
|
|
print("\n🎉 Setup completed successfully!")
|
|
|
|
print(f"\n{'='*50}")
|
|
print("🚀 Next steps:")
|
|
print("1. Run the application: python app.py")
|
|
print("2. Open your browser to the displayed URL")
|
|
print("3. Start playing your MMORPG!")
|
|
print(f"{'='*50}")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|