【发布时间】:2019-01-21 18:30:45
【问题描述】:
概述
from elasticsearch import Elasticsearch不起作用。
import elasticsearch
e = elasticsearch.Elasticsearch(...)
确实有效。
迪茨
我正在尝试使用 AWS 在 python 中使用一个简单的 Elasticsearch 客户端(在 Amazon linux e3 机器上使用 ssh)。我要复制的代码是here。我无法按照指南中的说明导入 Elasticsearch 类。
使用from elasticsearch import Elasticsearch 会出现错误:ImportError: cannot import name 'Elasticsearch'。
我打开了 python3 cli 来查看它。如果我输入from elasticsearch import E 并完成制表符,我会得到以下建议:EOFError( Ellipsis EnvironmentError( Exception(。但是from elasticsearch import Ellipsis 给了我ImportError: cannot import name 'Ellipsis'。
如果我输入import elasticsearch,然后在下一行elasticsearch. 并点击tab 以自动完成,我会得到我期望的完整范围(Elasticsearch(、RequestsHttpConnection( 等)。
我认为这与安装方式/安装位置有关。
我最初使用pip3 install elasticsearch --user 安装它。我卸载了它(pip3 uninstall elasticsearch)并返回到 python cli。 from elasticsearch import E 在 tab-complete 上仍然给我 EOFError( Ellipsis EnvironmentError( Exception(,但 from elasticsearch import Ellipsis 现在返回 ModuleNotFoundError: No module named 'elasticsearch',就像 import elasticsearch 一样。
不太确定发生了什么。我没有将其标记为 elasticsearch 因为它可能是用户错误:P
-
which python3: /usr/bin/python3 -
which pip3: ~/.local/bin/pip3 -
pip3 --version:来自 /home/ec2-user/.local/lib/python3.6/site-packages/pip (python 3.6) 的 pip 18.1
【问题讨论】:
-
您描述的导入行为与其本身不一致,听起来它可能来自您安装或卸载不同内容的过程中不同点的混合。
-
不要太认真地对待自动完成的建议——Python 的默认自动完成功能不是很好。它不知道如何自动完成
from导入。 IPython 做得更好。 -
(当我说“可能来自您的过程中安装或卸载不同的东西的不同点的混合”时,我的意思不仅仅是您说您卸载了 elasticsearch 的部分。这些部分在“Deets”部分听起来不一致。)
-
你是对的。我看到了自动完成,它把我送到了错误的方向。我认为我的问题是我的主文件被命名为'elasticsearch.py' T-T 我认为这也解释了 python cli 的问题。我以为我在
~中运行它以避免这个潜在的问题。无论如何,重命名我的初始文件后似乎可以工作。
标签: python python-3.x amazon-web-services python-module