“从导入b”不起作用,但是我可以导入a,然后使用a.b

时间:2019-01-21 18:30:46

标签: python python-3.x amazon-web-services python-module

概述

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仍会在制表符补全上给我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

1 个答案:

答案 0 :(得分:1)

我的问题是我将文件命名为与尝试从中导入的模块相同的名称-elasticsearch.py。如user2357112所述,我迷上了错误的自动完成功能。