在 Docker 中连接到 neo4j 时出现 py2neo AddressError
py2neo AddressError When Connecting to neo4j in Docker
我在使用 py2neo 4.10 和 Python 3.7.0.
在 Neo4j 3.4.6 上创建 Graph
对象时遇到困难
我创建了一个 Docker 容器 运行 Neo4j,并且我使用 Docker 文件条目 ENV NEO4J_AUTH=none
禁用了身份验证。我验证了我可以使用 http://localhost:7474 从主机浏览到 Neo4j 数据库,并且我不需要输入密码。
我为我的网络服务器创建了第二个 Docker 包含。我使用 Docker exec -it 033f92b042c1 /bin/bash
访问了 Bash shell。我确认我可以 ping 包含 Neo4j 安装的 Docker 图像。
从第二个 Docker 图像,我试图创建一个 Database
对象或 Graph
对象。
import neo4j
import py2neo
from py2neo import Graph
graph = Graph("bolt://172.17.0.3:7687")
我尝试了不同的协议和 localhost
而不是 IP。在每种情况下,Python 都会抛出这个:
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/py2neo/database.py", line 88, in __new__
inst = cls._instances[key]
KeyError: '5280a6d494b601f0256493eab3a08e55'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.7/site-packages/py2neo/database.py", line 305, in __new__
database = Database(uri, **settings)
File "/usr/local/lib/python3.7/site-packages/py2neo/database.py", line 92, in __new__
from py2neo.internal.http import HTTPDriver, HTTPSDriver
File "/usr/local/lib/python3.7/site-packages/py2neo/internal/http.py", line 26, in <module>
from neo4j.addressing import SocketAddress
File "/usr/local/lib/python3.7/site-packages/neo4j/addressing.py", line 26, in <module>
from neo4j.exceptions import AddressError
ImportError: cannot import name 'AddressError' from 'neo4j.exceptions' (/usr/local/lib/python3.7/site-packages/neo4j/exceptions.py)
我是否遗漏了一个依赖项,或者是否有其他方法可以连接 Docker 图像?
Py2neo 不需要 neo4j。原因可能是 neo4j 造成了问题。
在我的例子中,一定要进行全新安装,我删除了所有与 neo4j 相关的模块,然后安装 py2neo 及其要求的 neo4j-driver。
pip uninstall neo4j neobolt neo4restclient neo4j-driver py2neo
然后安装:
pip install neo4j-driver py2neo
希望能奏效。
我在使用 py2neo 4.10 和 Python 3.7.0.
在 Neo4j 3.4.6 上创建Graph
对象时遇到困难
我创建了一个 Docker 容器 运行 Neo4j,并且我使用 Docker 文件条目 ENV NEO4J_AUTH=none
禁用了身份验证。我验证了我可以使用 http://localhost:7474 从主机浏览到 Neo4j 数据库,并且我不需要输入密码。
我为我的网络服务器创建了第二个 Docker 包含。我使用 Docker exec -it 033f92b042c1 /bin/bash
访问了 Bash shell。我确认我可以 ping 包含 Neo4j 安装的 Docker 图像。
从第二个 Docker 图像,我试图创建一个 Database
对象或 Graph
对象。
import neo4j
import py2neo
from py2neo import Graph
graph = Graph("bolt://172.17.0.3:7687")
我尝试了不同的协议和 localhost
而不是 IP。在每种情况下,Python 都会抛出这个:
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/py2neo/database.py", line 88, in __new__
inst = cls._instances[key]
KeyError: '5280a6d494b601f0256493eab3a08e55'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.7/site-packages/py2neo/database.py", line 305, in __new__
database = Database(uri, **settings)
File "/usr/local/lib/python3.7/site-packages/py2neo/database.py", line 92, in __new__
from py2neo.internal.http import HTTPDriver, HTTPSDriver
File "/usr/local/lib/python3.7/site-packages/py2neo/internal/http.py", line 26, in <module>
from neo4j.addressing import SocketAddress
File "/usr/local/lib/python3.7/site-packages/neo4j/addressing.py", line 26, in <module>
from neo4j.exceptions import AddressError
ImportError: cannot import name 'AddressError' from 'neo4j.exceptions' (/usr/local/lib/python3.7/site-packages/neo4j/exceptions.py)
我是否遗漏了一个依赖项,或者是否有其他方法可以连接 Docker 图像?
Py2neo 不需要 neo4j。原因可能是 neo4j 造成了问题。
在我的例子中,一定要进行全新安装,我删除了所有与 neo4j 相关的模块,然后安装 py2neo 及其要求的 neo4j-driver。
pip uninstall neo4j neobolt neo4restclient neo4j-driver py2neo
然后安装:
pip install neo4j-driver py2neo
希望能奏效。