{"record":{"id":"d5c542a002a481ff","repo":"invoke-ai/InvokeAI","slug":"can-t-start-dev-reload-because-jurigged-is-not","errorCode":null,"errorMessage":"Can't start `--dev_reload` because jurigged is not found; `pip install -e \".[dev]\"` to include development dependencies.","messagePattern":"Can't start `--dev_reload` because jurigged is not found; `pip install -e \"\\.\\[dev\\]\"` to include development dependencies\\.","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"invokeai/app/util/startup_utils.py","lineNumber":53,"sourceCode":"\n\ndef invokeai_source_dir() -> Path:\n    # `invokeai.__file__` doesn't always work for editable installs\n    this_module_path = Path(__file__).resolve()\n    # https://youtrack.jetbrains.com/issue/PY-38382/Unresolved-reference-spec-but-this-is-standard-builtin\n    # noinspection PyUnresolvedReferences\n    depth = len(__spec__.parent.split(\".\"))\n    return this_module_path.parents[depth - 1]\n\n\ndef enable_dev_reload(custom_nodes_path=None) -> None:\n    \"\"\"Enable hot reloading on python file changes during development.\"\"\"\n    from invokeai.backend.util.logging import InvokeAILogger\n\n    try:\n        import jurigged\n    except ImportError as e:\n        raise RuntimeError(\n            'Can\\'t start `--dev_reload` because jurigged is not found; `pip install -e \".[dev]\"` to include development dependencies.'\n        ) from e\n    else:\n        paths = [str(invokeai_source_dir() / \"*.py\")]\n        if custom_nodes_path:\n            paths.append(str(custom_nodes_path / \"*.py\"))\n        jurigged.watch(pattern=paths, logger=InvokeAILogger.get_logger(name=\"jurigged\").info)\n\n\ndef apply_monkeypatches() -> None:\n    \"\"\"Apply monkeypatches to fix issues with third-party libraries.\"\"\"\n\n    import invokeai.backend.util.hotfixes  # noqa: F401 (monkeypatching on import)\n\n\ndef register_mime_types() -> None:\n    \"\"\"Register additional mime types for windows.\"\"\"\n    # Fix for windows mimetypes registry entries being borked.","sourceCodeStart":35,"sourceCodeEnd":71,"githubUrl":"https://github.com/invoke-ai/InvokeAI/blob/0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06/invokeai/app/util/startup_utils.py#L35-L71","documentation":"The --dev_reload hot-reload feature depends on the optional third-party package jurigged, which is only installed with the dev extras. enable_dev_reload() imports jurigged and converts a missing-module ImportError into a RuntimeError explaining how to install it.","triggerScenarios":"Launching invokeai with --dev_reload in an environment installed from PyPI or without dev dependencies, so `import jurigged` fails.","commonSituations":"Developers running a production install (pip install invokeai) and passing --dev_reload; fresh clones where `pip install -e \".[dev]\"` was skipped; virtualenv not activated so dev extras missing.","solutions":["Install dev dependencies: pip install -e \".[dev]\" (includes jurigged)","Or install jurigged alone: pip install jurigged","Drop the --dev_reload flag if hot reloading is not needed","Confirm you are in the correct virtualenv before launching"],"exampleFix":"// before\n$ invokeai --dev_reload  # RuntimeError: jurigged not found\n// after\n$ pip install -e \".[dev]\"\n$ invokeai --dev_reload","handlingStrategy":"try-catch","validationCode":"import importlib.util\n\ndef dev_reload_available():\n    return importlib.util.find_spec('jurigged') is not None","typeGuard":null,"tryCatchPattern":"try:\n    enable_dev_reload(custom_nodes_path)\nexcept RuntimeError as e:\n    if 'jurigged is not found' in str(e):\n        print('Hot reload unavailable; run: pip install -e \".[dev]\"')\n    else:\n        raise","preventionTips":["Install dev extras in dev environments: pip install -e \".[dev]\"","Gate --dev_reload behind an environment check for jurigged","Keep dev and production launch scripts separate"],"tags":["python","missing-dependency","dev-environment","hot-reload"],"backgroundTag":"missing-optional-dependency","analyzedSha":"0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06","analyzedAt":"2026-08-29T04:46:49.967Z","schemaVersion":2},"datasetVersion":"2026-08-29T07:17:48.351Z"}