py2neo从3.1.2升级至4.0.0出现ModuleNotFoundError 求等效替代模块
py2neo 3.1.2 升级至4.0.0 模块缺失适配指南
升级场景说明
业务应用当前基于py2neo 3.1.2版本对接Neo4j数据库,现启动4.0.0版本升级,已完成Cypher语法层的适配核验,升级过程中出现内置模块引用失效问题,触发两类明确报错:
- 引用
py2neo.database.status路径时抛出ModuleNotFoundError: No module named 'py2neo.database.status'; 'py2neo.database' is not a package - 引用
py2neo.packages路径时抛出ModuleNotFoundError: No module named 'py2neo.packages'
涉及的失效导入语句如下:
from py2neo.database.status import ConstraintError from py2neo.packages.neo4j.v1.exceptions import ProtocolError from py2neo.packages.httpstream import http
逐模块等效替换方案
py2neo 4.0.0对包结构做了全量重构,移除了旧版本中嵌套打包的内部依赖,将核心类、异常统一收敛至顶层命名空间,各失效导入的等效替代逻辑如下:
- ConstraintError替换方案
旧版本嵌套在database.status子模块下的约束异常,已迁移至py2neo全局顶层命名空间,直接替换导入语句即可,异常的属性、捕获逻辑与旧版本完全兼容,原有业务代码无需调整:from py2neo import ConstraintError - ProtocolError替换方案
旧版本嵌套在py2neo.packages目录下打包的Neo4j官方驱动依赖,在4.0.0版本中已解耦为独立的外部依赖,不再作为py2neo的内置子包分发。ProtocolError属于Neo4j官方Python驱动的异常类,完成官方驱动包安装后,替换导入语句为:from neo4j.exceptions import ProtocolError - httpstream模块替换方案
旧版本内置的httpstream通信组件已在4.0.0版本中彻底移除,所有网络请求逻辑统一基于Neo4j官方驱动实现,不再暴露底层HTTP流的操作接口。若原有业务代码依赖该模块做连通性检测、底层请求配置,可直接通过py2neo顶层Graph对象提供的连通性校验、连接配置能力实现等效功能,无需直接操作底层HTTP组件。
内容的提问来源于stack exchange,提问作者Madhavan Salai
相关产品推荐
相关产品推荐

