~/wiki

Module Loading Failures

Confiance : high
module-loadingimport-errorspython-packagingproduction-failuresundefined-referencespackage-structuredeployment-issuesassistant-rhcritical-bugsrag-systemsnameerrorimporterrorsystem-crashes

Common failure mode in Python applications where modules fail to load due to undefined imports, incorrect package references, or missing dependencies. Particularly problematic in production AI systems where import failures can cause complete system outages.

Common Causes

Incorrect Import Paths

# Fails when not in correct directory structure
from config import settings  # Should be src.rag.config
from pipeline import RAGPipeline  # Missing package qualification

Missing sys.path Configuration

# Insufficient path setup
sys.path.append(os.getcwd())  # Only adds current directory
# Missing: sys.path.append('src') for package access

undefined-references in Imports

# Module loads but classes undefined
from data_engineering.extract import PDFToText  # Import succeeds
pdf_extractor = PDFToText()  # Fails - missing required arguments

Critical Case Study: Assistant-RH

The assistant-rh system exhibited multiple module loading failures:

  1. Entry Point Failure - src/rag/main.py imports from non-existent paths
  2. Silent Fallbacks - Scripts fall back to basic extractors when advanced modules fail
  3. Cascade Failures - Single import error breaks entire module chains
  4. Runtime Discovery - Issues only surface during actual execution

Impact Patterns

Development Phase

  • Silent failures during testing
  • Inconsistent behavior across environments
  • Difficulty reproducing issues locally

Production Deployment

  • Complete system startup failures
  • Service unavailability
  • Rollback requirements
  • Customer impact

Prevention Strategies

Package Structure Validation

# Proper package initialization
__init__.py files in all package directories
Explicit relative/absolute import declarations

Import Testing

# Automated import validation
def test_all_imports():
    import src.rag.main  # Should not raise
    import src.rag.pipeline  # Verify all dependencies

Path Management

# Robust sys.path configuration  
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent.parent))

Best Practices for RAG Systems

Dependency Management

  • Explicit requirements.txt with pinned versions
  • Virtual environment isolation
  • Docker containerization for consistency

Module Organization

  • Clear separation between data processing and serving layers
  • Minimal cross-dependencies between modules
  • Factory patterns for dynamic component loading

Error Handling

  • Graceful degradation when optional modules fail
  • Clear error messages for missing dependencies
  • Health check endpoints for import validation

See also