python - ImportError:无法从“elasticsearch”导入名称“Elasticsearch”
问题描述
当我尝试将 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
我也尝试使用弹性搜索版本 6 和 5。但总是同样的错误。我很困惑...
解决方案
就像我上面说的,只需将您的脚本 elasticsearch.py 重命名为另一个 ..
推荐阅读
- python - 如何绕过 GeneralName TypeError?
- python - 跨进程传递队列中的对象引用
- ajax - 选择单选按钮时弹出错误提示框
- java - 在 if ese 语句中获取计算结果
- python - 使用正则表达式将捕获的单词替换为捕获的单词和引用
- angular - Angular CLI 停止在浏览器控制台中为我提供合理的行(无源映射),但终端显示正确的源
- sql - 为统计模式值选择整行
- gradle - 如何让 SonarQube 计算 spock/groovy 单元测试?
- opencv - 使用 OpenCV 识别具有嘈杂背景的不完美形状
- asp.net - asp.net Web 表单 - 异步等待异常