#!/usr/bin/env python3 """ PunimTag CLI Setup Script Simple setup for the minimal photo tagger """ import os import sys import subprocess from pathlib import Path def check_python_version(): """Check if Python version is compatible""" if sys.version_info < (3, 7): print("โŒ Python 3.7+ is required") return False print(f"โœ… Python {sys.version_info.major}.{sys.version_info.minor} detected") return True def install_requirements(): """Install Python requirements""" requirements_file = Path("requirements.txt") if not requirements_file.exists(): print("โŒ requirements.txt not found!") return False print("๐Ÿ“ฆ Installing Python dependencies...") try: subprocess.run([ sys.executable, '-m', 'pip', 'install', '-r', 'requirements.txt' ], check=True) print("โœ… Dependencies installed successfully") return True except subprocess.CalledProcessError as e: print(f"โŒ Failed to install dependencies: {e}") return False def create_directories(): """Create necessary directories""" directories = ['data', 'logs'] for directory in directories: Path(directory).mkdir(exist_ok=True) print(f"โœ… Created directory: {directory}") def test_installation(): """Test if face recognition works""" print("๐Ÿงช Testing face recognition installation...") try: import face_recognition import numpy as np from PIL import Image print("โœ… All required modules imported successfully") return True except ImportError as e: print(f"โŒ Import error: {e}") return False def main(): """Main setup function""" print("๐Ÿš€ PunimTag CLI Setup") print("=" * 40) # Check Python version if not check_python_version(): return 1 # Check if we're in a virtual environment (recommended) if sys.prefix == sys.base_prefix: print("โš ๏ธ Not in a virtual environment!") print(" Recommended: python -m venv venv && source venv/bin/activate") response = input(" Continue anyway? (y/N): ").strip().lower() if response != 'y': print("Setup cancelled. Create a virtual environment first.") return 1 else: print("โœ… Virtual environment detected") print() # Create directories print("๐Ÿ“ Creating directories...") create_directories() print() # Install requirements if not install_requirements(): return 1 print() # Test installation if not test_installation(): print("โš ๏ธ Installation test failed. You may need to install additional dependencies.") print(" For Ubuntu/Debian: sudo apt-get install build-essential cmake") print(" For macOS: brew install cmake") return 1 print() print("โœ… Setup complete!") print() print("๐ŸŽฏ Quick Start:") print(" 1. Add photos: python3 photo_tagger.py scan /path/to/photos") print(" 2. Process faces: python3 photo_tagger.py process") print(" 3. Identify faces: python3 photo_tagger.py identify") print(" 4. View stats: python3 photo_tagger.py stats") print() print("๐Ÿ“– For help: python3 photo_tagger.py --help") print() print("โš ๏ธ IMPORTANT: Always activate virtual environment first!") print(" source venv/bin/activate") return 0 if __name__ == '__main__': sys.exit(main())