Spaces:
Running
on
Zero
Running
on
Zero
File size: 3,241 Bytes
36e49b4 dda982a fed6d4a a773878 dda982a a773878 dda982a a773878 dbdd7c8 a773878 dbdd7c8 a773878 c0c51c2 575f1c7 21c909d 575f1c7 21c909d 575f1c7 21c909d 575f1c7 dda982a a773878 dda982a a773878 dda982a a773878 dda982a a773878 dda982a |
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 |
import spaces # Must be imported before any CUDA initialization
import sys
import os
from pathlib import Path
# Get the current directory and setup Python path
current_dir = os.path.dirname(os.path.abspath(__file__))
sys.path.append(current_dir)
# Import environment manager after setting up path
try:
from src.core.environment import environment_manager
# Perform complete environment setup
print("Setting up environment...")
setup_results = environment_manager.full_environment_setup()
# Report setup status
print(f"Environment setup completed with results: {len([k for k, v in setup_results.items() if v])} successful, {len([k for k, v in setup_results.items() if not v])} failed")
except ImportError as e:
print(f"Warning: Could not import environment manager: {e}")
print("Falling back to basic setup...")
# Fallback to basic setup if environment manager fails
import subprocess
# Basic dependency checks
try:
import torch
print(f"PyTorch version: {torch.__version__}")
except ImportError:
print("Installing PyTorch...")
subprocess.run([sys.executable, "-m", "pip", "install", "-q", "torch", "torchvision"], check=False)
try:
from markitdown import MarkItDown
print("MarkItDown is available")
except ImportError:
print("Installing MarkItDown...")
subprocess.run([sys.executable, "-m", "pip", "install", "-q", "markitdown[all]"], check=False)
try:
import docling
print("Docling is available")
except ImportError:
print("Installing Docling...")
subprocess.run([sys.executable, "-m", "pip", "install", "-q", "docling"], check=False)
# Check RAG dependencies as fallback
try:
from langchain_openai import OpenAIEmbeddings
from langchain_community.retrievers import BM25Retriever
print("RAG dependencies are available")
except ImportError:
print("Installing RAG dependencies...")
rag_packages = [
"langchain>=0.3.0",
"langchain-openai>=0.2.0",
"langchain-google-genai>=2.0.0",
"langchain-chroma>=0.1.0",
"langchain-text-splitters>=0.3.0",
"langchain-community>=0.3.0", # For BM25Retriever and EnsembleRetriever
"chromadb>=0.5.0",
"sentence-transformers>=3.0.0",
"rank-bm25>=0.2.0" # Required for BM25Retriever
]
for package in rag_packages:
subprocess.run([sys.executable, "-m", "pip", "install", "-q", package], check=False)
# Import main function with fallback strategies (HF Spaces compatibility)
try:
from src.main import main
except ModuleNotFoundError:
try:
# Fallback: adjust path and try again
sys.path.append(os.path.join(current_dir, "src"))
from src.main import main
except ModuleNotFoundError:
# Last resort: create __init__.py if missing
init_path = os.path.join(current_dir, "src", "__init__.py")
if not os.path.exists(init_path):
with open(init_path, "w") as f:
pass
from src.main import main
if __name__ == "__main__":
main() |