{"record":{"id":"f12857e4200fc2f0","repo":"langchain-ai/langchain","slug":"unable-to-import-from-langchain-text-splitters-pl","errorCode":null,"errorMessage":"Unable to import from langchain_text_splitters. Please specify text_splitter or install langchain_text_splitters with `pip install -U langchain-text-splitters`.","messagePattern":"Unable to import from langchain_text_splitters\\. Please specify text_splitter or install langchain_text_splitters with `pip install -U langchain-text-splitters`\\.","errorType":"exception","errorClass":"ImportError","httpStatus":null,"severity":"error","filePath":"libs/core/langchain_core/document_loaders/base.py","lineNumber":81,"sourceCode":"            text_splitter: `TextSplitter` instance to use for splitting documents.\n\n                Defaults to `RecursiveCharacterTextSplitter`.\n\n        Raises:\n            ImportError: If `langchain-text-splitters` is not installed and no\n                `text_splitter` is provided.\n\n        Returns:\n            List of `Document` objects.\n        \"\"\"\n        if text_splitter is None:\n            if not _HAS_TEXT_SPLITTERS:\n                msg = (\n                    \"Unable to import from langchain_text_splitters. Please specify \"\n                    \"text_splitter or install langchain_text_splitters with \"\n                    \"`pip install -U langchain-text-splitters`.\"\n                )\n                raise ImportError(msg)\n\n            text_splitter_: TextSplitter = RecursiveCharacterTextSplitter()\n        else:\n            text_splitter_ = text_splitter\n        docs = self.load()\n        return text_splitter_.split_documents(docs)\n\n    # Attention: This method will be upgraded into an abstractmethod once it's\n    #            implemented in all the existing subclasses.\n    def lazy_load(self) -> Iterator[Document]:\n        \"\"\"A lazy loader for `Document`.\n\n        Yields:\n            The `Document` objects.\n        \"\"\"\n        if type(self).load != BaseLoader.load:\n            return iter(self.load())\n        msg = f\"{self.__class__.__name__} does not implement lazy_load()\"","sourceCodeStart":63,"sourceCodeEnd":99,"githubUrl":"https://github.com/langchain-ai/langchain/blob/e32fa9a52eab3b61ad7a45399bfde59b3e580fc4/libs/core/langchain_core/document_loaders/base.py#L63-L99","documentation":"`BaseLoader.load_and_split` (document_loaders/base.py) defaults to a `RecursiveCharacterTextSplitter` from the optional dependency `langchain_text_splitters`; if that import failed at module load, calling `load_and_split(text_splitter=None)` raises `ImportError` instructing you to install it or pass your own splitter.","triggerScenarios":"Calling `loader.load_and_split()` on any document loader subclass when `langchain-text-splitters` is not installed in the environment; slim deployments (core-only installs); virtualenvs built from a partial requirements list.","commonSituations":"Installing only `langchain-core` (or a partner package) without the text-splitters extra; environments pinned to old versions where the package moved out of core; CI images trimmed for size.","solutions":["Install the dependency: `pip install -U langchain-text-splitters` (or add it to pyproject dependencies)","Or pass an explicit splitter: `loader.load_and_split(text_splitter=RecursiveCharacterTextSplitter(...))` from wherever it is available","Verify with `python -c \"import langchain_text_splitters\"`","If managing with uv: `uv add langchain-text-splitters` / ensure it's in the relevant dependency group"],"exampleFix":"# before\ndocs = loader.load_and_split()  # ImportError if package missing\n\n# after (option 1)\n# pip install -U langchain-text-splitters\ndocs = loader.load_and_split()\n\n# after (option 2)\ndocs = loader.load_and_split(text_splitter=CharacterTextSplitter(chunk_size=1000))","handlingStrategy":"validation","validationCode":"import importlib.util, contextlib\n\ndef text_splitters_available() -> bool:\n    return importlib.util.find_spec('langchain_text_splitters') is not None\n\nsplitter = None\nif text_splitters_available():\n    from langchain_text_splitters import RecursiveCharacterTextSplitter\n    splitter = RecursiveCharacterTextSplitter()","typeGuard":null,"tryCatchPattern":"try:\n    docs = loader.load_and_split()\nexcept ImportError as e:\n    if 'langchain_text_splitters' in str(e):\n        docs = loader.load()  # split later, or install the package\n    else:\n        raise","preventionTips":["Declare langchain-text-splitters in pyproject when using load_and_split","Gate optional-dependency features on find_spec checks","Pin the extra in slim Docker images used for ingestion jobs"],"tags":["document-loader","dependency","import","text-splitting"],"backgroundTag":null,"analyzedSha":"e32fa9a52eab3b61ad7a45399bfde59b3e580fc4","analyzedAt":"2026-08-14T18:42:09.092Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}