使用llama-index的Unstructured.io版本时SimpleDirectoryReader加载失败求助
问题背景
尝试使用llama-index的Unstructured.io版本处理目录中的PDF和HTML文件,执行代码时触发文件找不到错误,提示缺失base.py文件。
错误信息
File "main.py", line 199, in lddataV2
SimpleDirectoryReader = download_loader("SimpleDirectoryReader")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/.../venv/lib/python3.11/site-packages/llama_index/readers/download.py", line 211, in download_loader
spec.loader.exec_module(module) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap_external>", line 936, in exec_module
File "<frozen importlib._bootstrap_external>", line 1073, in get_code
File "<frozen importlib._bootstrap_external>", line 1130, in get_data
FileNotFoundError: [Errno 2] No such file or directory: '/.../venv/lib/python3.11/site-packages/llama_index/readers/llamahub_modules/file/base.py'
涉事代码
SimpleDirectoryReader = download_loader("SimpleDirectoryReader") loader = SimpleDirectoryReader('output_html', file_extractor={ ".pdf": "UnstructuredReader", ".html": "UnstructuredReader" }) documents = loader.load_data()
环境信息
- llama-index版本:0.6.2
- Python版本:3.11
解决方案
修改导入方式,使用内置模块
在llama-index 0.6.2版本中,SimpleDirectoryReader属于核心内置模块,无需通过download_loader下载加载。同时file_extractor需要传入实例而非字符串,修改代码如下:from llama_index import SimpleDirectoryReader from llama_index.readers.file import UnstructuredReader loader = SimpleDirectoryReader('output_html', file_extractor={ ".pdf": UnstructuredReader(), ".html": UnstructuredReader() }) documents = loader.load_data()安装完整的Unstructured依赖
执行命令安装处理多种文档格式所需的依赖:pip install unstructured[all-docs]清理损坏的llamahub缓存(可选)
若之前的download_loader操作生成了损坏的缓存文件,删除路径/.../venv/lib/python3.11/site-packages/llama_index/readers/llamahub_modules下的文件,再重新运行代码。
内容的提问来源于stack exchange,提问作者user2966197

