zylon-ai/private-gpt · error · ImportError
Text reader dependencies are not installed.
Error message
Text reader dependencies are not installed.
What it means
Raised by the text reader factory when the lazily-imported private_gpt.components.readers.text.text_reader.TextReader module cannot be imported, i.e. the optional dependencies that back the plain-text ingestion path are missing from the environment. The factory catches the ImportError and re-raises it wrapped with a formatted 'missing dependency' message so the caller knows which optional extra to install rather than seeing a raw ModuleNotFoundError. It is an installation/packaging problem, not a runtime data problem.
Source
Thrown at private_gpt/components/readers/factories/text.py:55
HtmlReader,
)
except ImportError as e:
raise ImportError(
format_missing_dependency_message(
"HTML reader",
extras="ingest-markup",
)
) from e
return HtmlReader()
def _text_reader() -> IngestionReader:
try:
from private_gpt.components.readers.text.text_reader import (
TextReader,
)
except ImportError as e:
raise ImportError(
format_missing_dependency_message(
"Text reader",
)
) from e
return TextReader()
_EXTENSION_READERS = {
".csv": _delimiter_reader,
".tsv": _delimiter_reader,
".psv": _delimiter_reader,
".eml": _email_reader,
".html": _html_reader,
".htm": _html_reader,
".xhtml": _html_reader,
".xht": _html_reader,
".shtml": _html_reader,
".shtm": _html_reader,View on GitHub (pinned to 4a030776a3)
Solutions
- Install the text-ingestion extra for private-gpt (e.g. `pip install -e '.[ingest-text]'` or the extra name shown in format_missing_dependency_message output).
- Verify the import now resolves: `python -c "from private_gpt.components.readers.text.text_reader import TextReader"`.
- If you do not need text ingestion, avoid routing .txt/.md files to the text reader (check _EXTENSION_READERS mappings) or register a fallback reader for those extensions.
- If the extra is installed but the error persists, check for a conflicting package version causing the inner ImportError (inspect the chained `__cause__`).
Example fix
# before
reader = component.get_reader_by_extension(".txt") # ImportError: Text reader dependencies are not installed.
# after
# shell: pip install -e '.[ingest-text]'
reader = component.get_reader_by_extension(".txt") # ok Defensive patterns
Strategy: validation
Validate before calling
def text_reader_available() -> bool:
try:
from private_gpt.components.readers.text.text_reader import TextReader # noqa: F401
return True
except ImportError:
return False
if not text_reader_available():
raise SystemExit("Install the text ingestion extra before ingesting .txt files") Try / catch
try:
reader = component.get_reader_by_extension(".txt")
except ImportError as e:
logger.error("Missing optional dependency: %s", e)
raise Prevention
- Pin and install all ingestion extras your file types require in the deployment image.
- Add a startup probe that imports each optional reader your config enables.
- Document which extensions require which extras next to your ingestion config.
When it happens
Trigger: Calling get_reader_by_extension('.txt') (or any extension mapped to _text_reader in _EXTENSION_READERS) in an environment where the text-reader extra was never installed, so `from private_gpt.components.readers.text.text_reader import TextReader` raises ImportError.
Common situations: Installing private-gpt with a minimal extras set (e.g. only ingest-markup) and then ingesting a .txt/.md file; a fresh venv built from a slim requirements list; CI images that prune optional ingestion dependencies; version upgrades where the text reader moved behind an extra.
Related errors
- VisionReaderFactory requires additional dependencies that ar
- DB2 database query dependencies are not installed. Install w
- OpenAI embeddings dependencies are not installed. Install wi
- OpenAI-like Embeddings dependencies are not installed. Insta
- INVALID_REQUEST_ERROR
AI-assisted analysis of zylon-ai/private-gpt@4a030776a3 (2026-08-15).
Data as JSON: /api/errors/1d5cc1e38ca4c8c3.
Report an issue: GitHub.