安装后使用Apache AGE python驱动程序时出现问题

yiytaume  于 2023-04-28  发布在  Python
关注(0)|答案(3)|浏览(132)

我开始使用Apache AGE python驱动程序并学习它,目前我正在探索GitHub上提供的示例,所以我决定继续使用在线jupyter平台进行测试[google-colab]是选定的一个,我遵循安装指南,以便在我的笔记本开始时,我在运行时中使用以下命令安装驱动程序:

!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

成功安装但每当我尝试使用它

# Not working
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)

Output(所有方法输出相同,模块没有属性)

AttributeError                            Traceback (most recent call last)

<ipython-input-38-053b6cdde8b8> in <cell line: 6>()
      4 from decimal import Decimal
      5 
----> 6 resultHandler = age.newResultHandler()
      7 
      8 def evalExp(exp):

AttributeError: module 'age' has no attribute 'newResultHandler'

另一方面,当我决定直接从源代码导入时,它可以正常工作

# Working
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')}

笔记本链接:https://drive.google.com/file/d/1f_6UUHlZbbKeAg4t94s9Hl59-DpSk3jU/view?usp=sharing

h4cxqtbf

h4cxqtbf1#

我认为你是在github repo之外创建py文件的。这就是为什么你在不工作的文件中提到的'age'不是一个有效的python包。
要解决这个问题,请在age/drivers/python/目录中创建相同的文件,并尝试运行该文件。这次提到的“age”将使用age/drivers/python/age中的包。

vybvopom

vybvopom2#

此错误是由antlr包引起的。尝试安装另一个版本的antlr4-python3-runtime。在需求文件中,它建议安装4.11.1版本,但请尝试安装4.9.2

pip install antlr4-python3-runtime==4.9.2

这应该可以工作,并且您应该能够在克隆的存储库之外使用age
您可能还需要git pull来检查属性名是否已更改(我在其中一个笔记本中注意到了)。

a8jjtwal

a8jjtwal3#

实际上取代

python3 setup.py install

pip3 install .

用于包安装解决问题

另一方面,如果我们继续使用第一个命令,那么这个包将被安装在python系统中不包含的地方,这样我们就可以将其附加到python包的路径中进行查找

1.获取包裹所在位置

!pip3 show age

2.将路径附加到sys

import sys

sys.path.append("OUTPUT_OF_STEP_1")

import age

相关问题