我开始使用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
3条答案
按热度按时间h4cxqtbf1#
我认为你是在github repo之外创建py文件的。这就是为什么你在不工作的文件中提到的'age'不是一个有效的python包。
要解决这个问题,请在
age/drivers/python/
目录中创建相同的文件,并尝试运行该文件。这次提到的“age”将使用age/drivers/python/age
中的包。vybvopom2#
此错误是由
antlr
包引起的。尝试安装另一个版本的antlr4-python3-runtime
。在需求文件中,它建议安装4.11.1
版本,但请尝试安装4.9.2
。这应该可以工作,并且您应该能够在克隆的存储库之外使用
age
。您可能还需要
git pull
来检查属性名是否已更改(我在其中一个笔记本中注意到了)。a8jjtwal3#
实际上取代
与
用于包安装解决问题
另一方面,如果我们继续使用第一个命令,那么这个包将被安装在python系统中不包含的地方,这样我们就可以将其附加到python包的路径中进行查找
1.获取包裹所在位置
2.将路径附加到sys