Я впервые пытаюсь использовать Py2neo v4 на своем ноутбуке Jupyter и сталкиваюсь с некоторыми странными вещами в выходных данных.Я пытаюсь следовать документации Py2neo v4, найденной здесь: Py2neo v4 Handbook
Вот первая часть очень простого кода, который я копирую из руководства.Он строит простые узлы с отношениями. Выводы, которые я должен получить, записаны в виде комментариев ниже.
from py2neo.data import Node, Relationship
a = Node("Person", name="Alice")
b = Node("Person", name="Bob")
ab = Relationship(a, "KNOWS", b)
ab ##Output should be (Alice)-[:KNOWS]->(Bob)
>>> (Alice)-[:KNOWS {}]->(Bob)
Сначала я думал, что {} в "[: KNOWS {}]" было связано стот факт, что никакие свойства не были приписаны этой взаимосвязи, однако следующий блок кода также дал другие выходные данные по сравнению с руководством.
c = Node("Person", name="Carol")
class WorksWith(Relationship): pass
ac = WorksWith(a, c)
type(ac) ##Output should be "WORKS_WITH"
>>> __main__.WorksWith
Наконец, я получил сообщение об ошибке при репликации другой части руководства.
w = ab + Relationship(b, "LIKES", c) + ac
w ##Output should be (Alice)-[:KNOWS]->(Bob)-[:LIKES]->(Carol)<-[:WORKS_WITH]-(Alice)
Вот ошибка:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
~\AppData\Local\Continuum\anaconda3\lib\site-packages\IPython\core\formatters.py in __call__(self, obj)
700 type_pprinters=self.type_printers,
701 deferred_pprinters=self.deferred_printers)
--> 702 printer.pretty(obj)
703 printer.flush()
704 return stream.getvalue()
~\AppData\Local\Continuum\anaconda3\lib\site-packages\IPython\lib\pretty.py in pretty(self, obj)
398 if cls is not object \
399 and callable(cls.__dict__.get('__repr__')):
--> 400 return _repr_pprint(obj, self, cycle)
401
402 return _default_pprint(obj, self, cycle)
~\AppData\Local\Continuum\anaconda3\lib\site-packages\IPython\lib\pretty.py in _repr_pprint(obj, p, cycle)
693 """A pprint that just redirects to the normal repr function."""
694 # Find newlines and replace them with p.break_()
--> 695 output = repr(obj)
696 for idx,output_line in enumerate(output.splitlines()):
697 if idx:
~\AppData\Local\Continuum\anaconda3\lib\site-packages\py2neo\data.py in __repr__(self)
672
673 def __repr__(self):
--> 674 return xstr(cypher_repr(self))
675
676 def __eq__(self, other):
~\AppData\Local\Continuum\anaconda3\lib\site-packages\py2neo\cypher\__init__.py in cypher_repr(value, **kwargs)
69 """
70 encoder = CypherEncoder(**kwargs)
---> 71 return encoder.encode_value(value)
72
73
~\AppData\Local\Continuum\anaconda3\lib\site-packages\py2neo\cypher\encoding.py in encode_value(self, value)
194 return u"duration({})".format(self.encode_string(value.iso_format()))
195 raise TypeError("Cypher literal values of type %s.%s are not supported" %
--> 196 (type(value).__module__, type(value).__name__))
197
198 def encode_string(self, value):
TypeError: Cypher literal values of type py2neo.data.Walkable are not supported
Я заставил кого-то еще попробовать код документации на своем iPython, и они получили те же ошибки.Кто-нибудь знает, как это исправить?