FoundationAgents/MetaGPT · error · FileNotFoundError

File {data_path} not found.

Error message

File {data_path} not found.

What it means

IndexableDocument.from_path first verifies the data file exists; a missing data_path raises FileNotFoundError echoing the path. This is the entry guard for the RAG indexing pipeline before read_data() attempts format-specific loading.

Source

Thrown at metagpt/document.py:125

        """
        return self.to_path()


class IndexableDocument(Document):
    """
    Advanced document handling: For vector databases or search engines.
    """

    model_config = ConfigDict(arbitrary_types_allowed=True)

    data: Union[pd.DataFrame, list]
    content_col: Optional[str] = Field(default="")
    meta_col: Optional[str] = Field(default="")

    @classmethod
    def from_path(cls, data_path: Path, content_col="content", meta_col="metadata"):
        if not data_path.exists():
            raise FileNotFoundError(f"File {data_path} not found.")
        data = read_data(data_path)
        if isinstance(data, pd.DataFrame):
            validate_cols(content_col, data)
            return cls(data=data, content=str(data), content_col=content_col, meta_col=meta_col)
        try:
            content = data_path.read_text()
        except Exception as e:
            logger.debug(f"Load {str(data_path)} error: {e}")
            content = ""
        return cls(data=data, content=content, content_col=content_col, meta_col=meta_col)

    def _get_docs_and_metadatas_by_df(self) -> (list, list):
        df = self.data
        docs = []
        metadatas = []
        for i in tqdm(range(len(df))):
            docs.append(df[self.content_col].iloc[i])
            if self.meta_col:

View on GitHub (pinned to 11cdf466d0)

Solutions

  1. Resolve to an absolute path and assert existence before indexing.
  2. Verify mounts/volumes and cwd in containerized runs.
  3. Create or re-download the data file at the expected location.

Example fix

# before
doc = IndexableDocument.from_path(Path('data/faq.csv'))  # FileNotFoundError

# after
p = Path('data/faq.csv').resolve()
assert p.is_file(), f'data file missing: {p}'
doc = IndexableDocument.from_path(p)
Defensive patterns

Strategy: validation

Validate before calling

p = data_path.resolve()
if not p.is_file():
    raise FileNotFoundError(f'data file missing: {p}')
doc = IndexableDocument.from_path(p, content_col=content_col)

Type guard

def is_existing_file(p: Path) -> TypeGuard[Path]:
    return p.exists() and p.is_file()

Prevention

When it happens

Trigger: IndexableDocument.from_path(Path('knowledge/base.xlsx')) where the directory or file does not exist; relative paths resolved from a different cwd; typo in the filename; mount/volume not attached in containers.

Common situations: Docker deployments where the data volume is not mounted at the expected path; notebooks run from a different working directory; data files moved or renamed after the indexing script was written.

Related errors


AI-assisted analysis of FoundationAgents/MetaGPT@11cdf466d0 (2026-08-14). Data as JSON: /api/errors/ddc2688ec7b67ccd. Report an issue: GitHub.