import os import sys import traceback import gradio as gr import spaces @spaces.GPU def test_all_imports(): results = [] # Test basic imports for lib_name in [ "torch", "numpy", "pandas", "PyPDF2", "transformers", "sentence_transformers" ]: try: __import__(lib_name) results.append(f"✅ {lib_name}: Successfully imported") except Exception as e: results.append(f"❌ {lib_name}: Error - {str(e)}") # Test langchain imports specifically try: import langchain results.append(f"✅ langchain: Successfully imported (version {langchain.__version__})") except Exception as e: results.append(f"❌ langchain: Error - {str(e)}") # Test langchain_community imports try: import langchain_community results.append(f"✅ langchain_community: Successfully imported") except Exception as e: results.append(f"❌ langchain_community: Error - {str(e)}") # Try alternative import format try: import langchain.community results.append(f"✅ langchain.community: Successfully imported") except Exception as e2: results.append(f"❌ langchain.community: Error - {str(e2)}") # Test specific langchain imports that might be failing try: from langchain.text_splitter import RecursiveCharacterTextSplitter results.append(f"✅ langchain.text_splitter: Successfully imported") except Exception as e: results.append(f"❌ langchain.text_splitter: Error - {str(e)}") try: from langchain.schema import Document results.append(f"✅ langchain.schema: Successfully imported") except Exception as e: results.append(f"❌ langchain.schema: Error - {str(e)}") try: from langchain.embeddings import HuggingFaceEmbeddings results.append(f"✅ langchain.embeddings: Successfully imported") except Exception as e: results.append(f"❌ langchain.embeddings: Error - {str(e)}") try: from langchain_community.vectorstores import FAISS results.append(f"✅ langchain_community.vectorstores: Successfully imported") except Exception as e: results.append(f"❌ langchain_community.vectorstores: Error - {str(e)}") # Try alternative import try: from langchain.vectorstores import FAISS results.append(f"✅ langchain.vectorstores: Successfully imported") except Exception as e2: results.append(f"❌ langchain.vectorstores: Error - {str(e2)}") # Check installed package versions try: import pkg_resources results.append("\n📦 Installed Packages:") for package in ["langchain", "langchain-community", "transformers", "sentence-transformers"]: try: version = pkg_resources.get_distribution(package).version results.append(f" - {package}: {version}") except: results.append(f" - {package}: Not installed") except: results.append("❌ Could not check installed packages") # Check PDF files results.append("\n📄 PDF Files:") for pdf_file in ["saudi_vision203.pdf", "saudi_vision2030_ar.pdf"]: if os.path.exists(pdf_file): size = os.path.getsize(pdf_file) / (1024 * 1024) # MB results.append(f" - {pdf_file}: Found ({size:.2f} MB)") else: results.append(f" - {pdf_file}: Not found") return "\n".join(results) def main(): with gr.Blocks(title="Import Diagnosis") as interface: gr.Markdown("# Vision 2030 Assistant - Import Error Diagnosis") test_button = gr.Button("Test All Imports") results_box = gr.Textbox(label="Results", lines=30) test_button.click(test_all_imports, inputs=[], outputs=[results_box]) interface.launch() if __name__ == "__main__": main()