#!/usr/bin/env python3 """ Environment Check Script for Document Extraction Tool This script validates that all required dependencies are properly installed and the environment is ready for deployment. """ import sys import importlib import warnings import os def check_python_version(): """Check if Python version is compatible.""" print("šŸ Checking Python version...") version = sys.version_info if version.major != 3 or version.minor < 8: print(f"āŒ Python 3.8+ required, found {version.major}.{version.minor}") return False print(f"āœ… Python {version.major}.{version.minor}.{version.micro} - Compatible") return True def check_package(package_name, import_name=None): """Check if a package is installed and importable.""" if import_name is None: import_name = package_name try: module = importlib.import_module(import_name) version = getattr(module, "__version__", "Unknown") print(f"āœ… {package_name}: {version}") return True except ImportError: print(f"āŒ {package_name}: Not installed") return False def check_critical_packages(): """Check critical packages required for the application.""" print("\nšŸ“¦ Checking critical packages...") critical_packages = [ ("gradio", "gradio"), ("PyPDF2", "PyPDF2"), ("python-docx", "docx"), ("python-pptx", "pptx"), ("pandas", "pandas"), ("openpyxl", "openpyxl"), ] all_critical_ok = True for package_name, import_name in critical_packages: if not check_package(package_name, import_name): all_critical_ok = False return all_critical_ok def check_optional_packages(): """Check optional packages that enhance functionality.""" print("\nšŸ”§ Checking optional packages...") optional_packages = [ ("docling", "docling"), ("docling-core", "docling_core"), ("transformers", "transformers"), ] optional_status = {} for package_name, import_name in optional_packages: optional_status[package_name] = check_package(package_name, import_name) return optional_status def check_file_permissions(): """Check file permissions and directory access.""" print("\nšŸ“ Checking file permissions...") # Check if we can write to current directory try: test_file = "temp_permission_test.txt" with open(test_file, "w") as f: f.write("test") os.remove(test_file) print("āœ… Write permissions: OK") return True except Exception as e: print(f"āŒ Write permissions: Failed - {e}") return False def check_environment_variables(): """Check important environment variables.""" print("\nšŸŒ Checking environment variables...") # Check for common issues if "PYTHONPATH" in os.environ: print(f"šŸ“ PYTHONPATH: {os.environ['PYTHONPATH']}") # Check for Gradio specific variables gradio_vars = ["GRADIO_SERVER_NAME", "GRADIO_SERVER_PORT", "GRADIO_SHARE"] for var in gradio_vars: value = os.environ.get(var, "Not set") print(f"šŸ“ {var}: {value}") return True def main(): """Run all environment checks.""" print("šŸ” Document Extraction Tool - Environment Check") print("=" * 50) all_checks_passed = True # Run all checks if not check_python_version(): all_checks_passed = False if not check_critical_packages(): all_checks_passed = False optional_status = check_optional_packages() if not check_file_permissions(): all_checks_passed = False check_environment_variables() # Final report print("\n" + "=" * 50) if all_checks_passed: print("āœ… All critical checks passed! Ready for deployment.") # Report on optional features if optional_status.get("docling", False): print("šŸš€ Enhanced PDF extraction available (docling)") else: print("āš ļø Basic PDF extraction only (docling not available)") else: print("āŒ Some critical checks failed. Please fix issues before deployment.") return 1 print("\n🌐 To start the application, run: python3 app.py") return 0 if __name__ == "__main__": sys.exit(main())