Spaces:
Sleeping
Sleeping
| #!/usr/bin/env python3 | |
| """ | |
| Hugging Face Spaces entry point for Crop Yield Prediction API | |
| """ | |
| import sys | |
| import os | |
| # Add src to Python path | |
| sys.path.insert(0, 'src') | |
| # Set up proper module structure for joblib loading (same as start.py) | |
| try: | |
| from models import DataPreprocessor | |
| import types | |
| # Make it available in multiple namespaces for joblib compatibility | |
| globals()['DataPreprocessor'] = DataPreprocessor | |
| if '__main__' not in sys.modules or not hasattr(sys.modules['__main__'], 'DataPreprocessor'): | |
| if '__main__' in sys.modules: | |
| sys.modules['__main__'].DataPreprocessor = DataPreprocessor | |
| if 'models' not in sys.modules: | |
| models_module = types.ModuleType('models') | |
| models_module.DataPreprocessor = DataPreprocessor | |
| sys.modules['models'] = models_module | |
| print("โ DataPreprocessor class prepared for joblib loading") | |
| except ImportError as e: | |
| print(f"Warning: Could not import DataPreprocessor: {e}") | |
| # Import the FastAPI app | |
| from app import app | |
| # This is the entry point for Hugging Face Spaces | |
| if __name__ == "__main__": | |
| import uvicorn | |
| # Get port from environment (Hugging Face Spaces typically uses 7860) | |
| port = int(os.environ.get("PORT", 7860)) | |
| print("๐พ Starting Crop Yield Prediction API on Hugging Face Spaces") | |
| print(f"๐ Server starting on port {port}") | |
| uvicorn.run( | |
| app, | |
| host="0.0.0.0", | |
| port=port, | |
| log_level="info" | |
| ) | |