ImportError:无法从“ elasticsearch”导入名称“ Elasticsearch”

时间:2019-12-19 15:45:54

标签: python elasticsearch pip

当我尝试将python 3.5中的Elasticsearch导入python 3.7时,总是出现相同的错误。

代码:

from elasticsearch import Elasticsearch
print(Elasticsearch())

错误:

Traceback (most recent call last):
  File "elasticsearch.py", line 3, in <module>
    from elasticsearch import Elasticsearch
  File "/app/elasticsearch.py", line 3, in <module>
    from elasticsearch import Elasticsearch
ImportError: cannot import name 'Elasticsearch' from 'elasticsearch' (/app/elasticsearch.py)

Python 3.8的错误

Traceback (most recent call last):
  File "elasticsearch.py", line 1, in <module>
    from elasticsearch import Elasticsearch
  File "/app/elasticsearch.py", line 1, in <module>
    from elasticsearch import Elasticsearch
ImportError: cannot import name 'Elasticsearch' from partially initialized module 'elasticsearch' (most likely due to a circular import) (/app/elasticsearch.py) 

我在Ubuntu 18.04,Windows和Docker上进行了尝试。对于Docker,我尝试了python:3.8到python:3.5以及python:alpine-3.8到python:alpine-3.5

我根据要求使用:

elasticsearch==7.1.0

搜索Elasticseach软件包

pip show elasticsearch

Name: elasticsearch
Version: 7.1.0
Summary: Python client for Elasticsearch
Home-page: https://github.com/elastic/elasticsearch-py
Author: Honza Král, Nick Lang
Author-email: honza.kral@gmail.com, nick@nicklang.com
License: Apache License, Version 2.0
Location: /usr/local/lib/python3.7/site-packages
Requires: urllib3
Required-by:
PS

我也尝试使用Elasticsearch版本6和5。但是始终存在相同的错误。我很困惑...

2 个答案:

答案 0 :(得分:2)

就像我在上面说的那样,只是将您的脚本elasticsearch.py​​重命名为另一个..

答案 1 :(得分:1)

您的文件名不应与程序包名称相同。通过重命名文件可以解决该问题。有关为什么会发生此错误的更多信息,您可以检查this post

示例:

elasticsearch.py  ----rename-to---->  sth-else.py