zylon-ai/private-gpt · error · ImportError

Delimited text reader dependencies are not installed.

Error message

Delimited text reader dependencies are not installed.

What it means

Raised as ImportError by _delimiter_reader() in factories/text.py when the lazy import of the DelimiterTextReader module fails. Unlike the markitdown/pptx factories, this helper calls format_missing_dependency_message with no extras argument, so the message has no install command — the delimited-text reader's dependencies are expected to be core (pandas/CSV-style deps), and an ImportError here usually indicates a broken environment rather than a missing optional extra. The chained __cause__ names the actually missing module.

Source

Thrown at private_gpt/components/readers/factories/text.py:12

from private_gpt.components.readers.base_reader import IngestionReader
from private_gpt.components.readers.factories.base import ReaderFactory
from private_gpt.utils.dependencies import format_missing_dependency_message


def _delimiter_reader() -> IngestionReader:
    try:
        from private_gpt.components.readers.text.delimiter_reader import (
            DelimiterTextReader,
        )
    except ImportError as e:
        raise ImportError(
            format_missing_dependency_message(
                "Delimited text reader",
            )
        ) from e
    return DelimiterTextReader()


def _email_reader() -> IngestionReader:
    try:
        from private_gpt.components.readers.text.email_reader import (
            EmailTextReader,
        )
    except ImportError as e:
        raise ImportError(
            format_missing_dependency_message(
                "Email reader",
            )
        ) from e

View on GitHub (pinned to 4a030776a3)

Solutions

  1. Inspect e.__cause__ in the traceback to identify the exact missing module.
  2. Re-sync the environment: uv sync --inexact --extra ingest (or the full set of extras you use) to restore missing core deps.
  3. If a specific package (e.g., pandas) is missing, install it explicitly: uv pip install pandas.
  4. Confirm you are running with the intended interpreter (which python / .venv/bin/python) — editor/IDE often picks another env.

Example fix

# diagnose the real missing module
try:
    from private_gpt.components.readers.text.delimiter_reader import DelimiterTextReader
except ImportError as e:
    print("actually missing:", e)

# then repair the env
# uv sync --inexact --extra ingest
Defensive patterns

Strategy: validation

Validate before calling

def delimiter_reader_available() -> bool:
    try:
        from private_gpt.components.readers.text.delimiter_reader import DelimiterTextReader  # noqa: F401
        return True
    except ImportError:
        return False

if not delimiter_reader_available():
    raise SystemExit("Environment incomplete: re-run uv sync --inexact (with your extras)")

Type guard

def delimiter_reader_available() -> bool:
    try:
        from private_gpt.components.readers.text.delimiter_reader import DelimiterTextReader  # noqa: F401
        return True
    except ImportError:
        return False

Try / catch

try:
    reader = _delimiter_reader()
except ImportError as e:
    logger.error("missing module: %r", e.__cause__ or e)
    raise SystemExit("Repair environment with: uv sync --inexact --extra ingest") from e

Prevention

When it happens

Trigger: Selecting the 'text' reader path that instantiates the delimited-text sub-reader while the import of private_gpt.components.readers.text.delimiter_reader (or its transitive imports, e.g., pandas) fails in the current interpreter.

Common situations: Partial/interrupted uv sync or pip install leaving dependencies missing; a venv activated for a different project; dependency conflicts downgrading or removing pandas; running from an editor with a different interpreter than the one deps were installed into.

Related errors


AI-assisted analysis of zylon-ai/private-gpt@4a030776a3 (2026-08-15). Data as JSON: /api/errors/1b777724a1339050. Report an issue: GitHub.