Python3.7+langchain0.0.27调用Neo4jPGStore遇模块缺失问题求助
问题与解决方案
问题描述
在Python 3.7.16的虚拟环境中,运行以下代码调用Neo4jPGStore时出现模块缺失错误:
from llama_index.graph_stores.neo4j import Neo4jPGStore graph_store = Neo4jPGStore( username=os.getenv("NEO4J_USERNAME"), password=os.getenv("NEO4J_PASSWORD"), url=os.getenv("NEO4J_URI"), refresh_schema=False )
错误日志:
ModuleNotFoundError Traceback (most recent call last) /tmp/ipykernel_35120/1908928590.py in <module> ----> 1 from llama_index.graph_stores.neo4j import Neo4jPGStore 2 3 4 graph_store = Neo4jPGStore( 5 username=os.getenv("NEO4J_USERNAME"), ~/Documents/git_stuff/LeuphanaStuff/MasterThesis/.venv/lib/python3.7/site-packages/llama_index/__init__.py in <module> 12 13 # embeddings ---> 14 from llama_index.embeddings.langchain import LangchainEmbedding 15 from llama_index.embeddings.openai import OpenAIEmbedding 16 ~/Documents/git_stuff/LeuphanaStuff/MasterThesis/.venv/lib/python3.7/site-packages/llama_index/embeddings/langchain.py in <module> 4 from typing import Any, List 5 ---> 6 from langchain.embeddings.base import Embeddings as LCEmbeddings 7 8 from llama_index.embeddings.base import BaseEmbedding ModuleNotFoundError: No module named 'langchain.embeddings'
因Python版本低于3.8,无法将langchain升级至0.0.27以上,询问是否不升级Python就无法搭建Neo4j数据库。
解决方案
不升级Python也能搭建并连接Neo4j数据库,问题出在llama_index与langchain的版本兼容,而非Neo4j本身。以下是两种解决思路:
1. 适配llama_index与langchain的兼容版本
- 安装支持Python 3.7的
langchain版本(如0.0.26及以下,该版本包含langchain.embeddings模块) - 安装与该
langchain版本兼容的旧版llama_index(例如0.6.14版本,经测试与langchain 0.0.26兼容,可根据实际调整) - 执行安装命令示例:
pip install langchain==0.0.26 pip install llama_index==0.6.14
2. 直接使用Neo4j官方Python驱动
绕开llama_index与langchain的依赖问题,直接用Neo4j官方库连接数据库:
- 安装官方驱动:
pip install neo4j - 示例连接代码:
from neo4j import GraphDatabase import os driver = GraphDatabase.driver( os.getenv("NEO4J_URI"), auth=(os.getenv("NEO4J_USERNAME"), os.getenv("NEO4J_PASSWORD")) ) # 测试连接 with driver.session() as session: result = session.run("MATCH (n) RETURN count(n) AS node_count") print("节点总数:", result.single()["node_count"]) driver.close()
内容的提问来源于stack exchange,提问作者Sanjiv Pradhanang
相关产品推荐
相关产品推荐

