安装Apache AGE Python驱动后调用newResultHandler出现属性错误
Apache AGE Python驱动导入问题:
import age找不到newResultHandler但源码路径导入正常 问题场景
在Google Colab环境中学习Apache AGE Python驱动,按官方指南执行以下命令完成安装:
!sudo apt-get update !sudo apt-get install python3-dev libpq-dev !git clone https://github.com/apache/age.git !cd age/drivers/python && pip3 install -r requirements.txt && python3 setup.py install
使用import age调用newResultHandler()时触发错误:
import age import unittest from decimal import Decimal resultHandler = age.newResultHandler() # 报错位置 def evalExp(exp): value = resultHandler.parse(exp) print(type(value), "|", exp, " --> " ,value ) mapStr = '{"name": "Smith", "num":123, "yn":true, "bigInt":123456789123456789123456789123456789::numeric}' evalExp(mapStr)
错误信息:
AttributeError: module 'age' has no attribute 'newResultHandler'
但通过源码路径导入则能正常运行:
import age.drivers.python.age as age import unittest from decimal import Decimal resultHandler = age.newResultHandler() def evalExp(exp): value = resultHandler.parse(exp) print(type(value), "|", exp, " --> " ,value ) mapStr = '{"name": "Smith", "num":123, "yn":true, "bigInt":123456789123456789123456789123456789::numeric}' evalExp(mapStr)
正常输出:
<class 'dict'> | {"name": "Smith", "num":123, "yn":true, "bigInt":123456789123456789123456789123456789::numeric} --> {'name': 'Smith', 'num': 123, 'yn': True, 'bigInt': Decimal('123456789123456789123456789123456789')}
问题原因
直接import age导入的是顶层空模块,而newResultHandler实际定义在age.drivers.python.age子模块中。安装过程中未正确配置模块导出逻辑,导致顶层age模块未暴露该方法。
解决办法
方法1:使用验证可行的导入路径(推荐)
保持当前可正常运行的导入方式,直接导入目标子模块:
import age.drivers.python.age as age
方法2:修改顶层模块的__init__.py
若希望通过import age直接调用方法,可修改age模块的顶层__init__.py文件(Colab中路径为/content/age/drivers/python/age/__init__.py),添加以下内容:
from .age import newResultHandler
修改后重新执行python3 setup.py install,即可通过import age调用age.newResultHandler()。
方法3:检查安装配置
查看age/drivers/python/setup.py中的packages参数,确保包含age.drivers.python.age相关模块。若配置不全,修改后重新执行安装命令。
内容的提问来源于stack exchange,提问作者rrrokhtar
相关产品推荐
相关产品推荐

