File size: 3,169 Bytes
db020d5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#!/usr/bin/env python3
"""
Setup checker for WikiFit application.
This script verifies that all required dependencies are installed and the app structure is correct.
"""

import importlib
import os
import sys
import subprocess

def check_imports():
    """Check that all required packages can be imported"""
    required_packages = ['streamlit', 'requests', 'PIL']
    missing_packages = []
    
    print("Checking required packages...")
    for package in required_packages:
        try:
            if package == 'PIL':
                # Special case for PIL/Pillow
                importlib.import_module('PIL')
                print(f"βœ“ {package} (Pillow) is installed")
            else:
                importlib.import_module(package)
                print(f"βœ“ {package} is installed")
        except ImportError:
            missing_packages.append(package)
            print(f"βœ— {package} is missing")
    
    return missing_packages

def check_file_structure():
    """Check that all required files exist"""
    required_files = [
        'app.py',
        'requirements.txt',
        'pages/__init__.py',
        'pages/home.py',
        'pages/search.py',
        'pages/quiz.py',
        'pages/workout_plans.py',
        'pages/remedies.py',
        'services/__init__.py',
        'services/wiki_service.py',
        'services/ai_service.py'
    ]
    
    missing_files = []
    
    print("\nChecking file structure...")
    for file_path in required_files:
        if os.path.exists(file_path):
            print(f"βœ“ {file_path} exists")
        else:
            missing_files.append(file_path)
            print(f"βœ— {file_path} is missing")
    
    return missing_files

def install_missing_packages(missing_packages):
    """Install missing packages using pip"""
    if not missing_packages:
        return
    
    print("\nAttempting to install missing packages...")
    for package in missing_packages:
        if package == 'PIL':
            package = 'pillow'  # PIL is installed via pillow
        
        try:
            subprocess.check_call([sys.executable, '-m', 'pip', 'install', package])
            print(f"βœ“ Successfully installed {package}")
        except subprocess.CalledProcessError:
            print(f"βœ— Failed to install {package}")

def main():
    """Run all checks"""
    print("WikiFit Setup Checker")
    print("=====================")
    
    # Check imports
    missing_packages = check_imports()
    
    # Check file structure
    missing_files = check_file_structure()
    
    # Summary
    print("\nCheck Summary:")
    if not missing_packages and not missing_files:
        print("βœ“ All checks passed! Your WikiFit installation looks good.")
        print("\nYou can run the app with: streamlit run app.py")
    else:
        if missing_packages:
            print(f"βœ— Missing packages: {', '.join(missing_packages)}")
            install_missing_packages(missing_packages)
        
        if missing_files:
            print(f"βœ— Missing files: {', '.join(missing_files)}")
            print("Please make sure all required files are in place.")

if __name__ == "__main__":
    main()