rohitg00/ai-engineering-from-scratch · error · ImportError

could not load module spec for {path}

Error message

could not load module spec for {path}

What it means

Error "could not load module spec for {path}" thrown in rohitg00/ai-engineering-from-scratch.

Source

Thrown at phases/19-capstone-projects/87-end-to-end-safety-gate/code/safety_gate.py:36

from typing import Iterable

HERE = Path(__file__).parent
ROOT = HERE.parent.parent
DETECTOR_DIR = ROOT / "83-prompt-injection-detector" / "code"
CLASSIFIER_DIR = ROOT / "85-content-classifier-integration" / "code"
RULES_DIR = ROOT / "86-constitutional-rules-engine" / "code"


def _load_module(name: str, path: Path) -> ModuleType:
    sys_path_entry = str(path.parent)
    inserted = False
    if sys_path_entry not in sys.path:
        sys.path.insert(0, sys_path_entry)
        inserted = True
    try:
        spec = importlib.util.spec_from_file_location(name, str(path))
        if spec is None or spec.loader is None:
            raise ImportError(f"could not load module spec for {path}")
        module = importlib.util.module_from_spec(spec)
        sys.modules[name] = module
        spec.loader.exec_module(module)
        return module
    finally:
        if inserted:
            sys.path.remove(sys_path_entry)


_detector_mod = _load_module("lesson83_detector", DETECTOR_DIR / "main.py")
_classifier_mod = _load_module("lesson85_classifier", CLASSIFIER_DIR / "main.py")
_rules_mod = _load_module("lesson86_rules", RULES_DIR / "main.py")

Detector = _detector_mod.Detector
Router = _classifier_mod.Router
Engine = _rules_mod.Engine
Fixer = _rules_mod.Fixer

View on GitHub (pinned to 39ea8a1c6d)

When it happens

Trigger: Thrown at phases/19-capstone-projects/87-end-to-end-safety-gate/code/safety_gate.py:36 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of rohitg00/ai-engineering-from-scratch@39ea8a1c6d (2026-08-26). Data as JSON: /api/errors/82656441bff64c1b. Report an issue: GitHub.