Я использую Docker контейнер с Ubuntu 16.04 дружественных с Python 3.5.2 виртуальной средой. Каждый раз, когда я пытаюсь инициализировать сервер uWSGI я получаю следующее сообщение об ошибке Python:ImportError при импорте elasticsearch.helpers в Python
File "/env/lib/python3.5/site-packages/elasticsearch_dsl/__init__.py", line 5, in <module>
from .search import Search
File "/env/lib/python3.5/site-packages/elasticsearch_dsl/search.py", line 3, in <module>
from elasticsearch.helpers import scan
ImportError: No module named 'elasticsearch.helpers'
Я бежал Баш вручную внутри контейнера Docker, чтобы увидеть, что случилось с модулем. Выполнив pip list
в виртуальной среде, я могу сказать, что пакеты установлены правильно:
# pip list
elasticsearch (2.1.0)
elasticsearch-dsl (0.0.8)
Запуск sys.path показывает, что папка пакетов сайт был правильно добавлен к пути питона:
import sys
sys.path
[
'',
'/env/lib/python35.zip',
'/env/lib/python3.5',
'/env/lib/python3.5/plat-x86_64-linux-gnu',
'/env/lib/python3.5/lib-dynload',
'/usr/lib/python3.5',
'/usr/lib/python3.5/plat-x86_64-linux-gnu',
'/env/lib/python3.5/site-packages'
]
Существует файл __init__.py в папке elasticsearch.helpers, так что это не проблема. Если я пытаюсь импортировать из консоли Python она не будет выполнена, а также:
from elasticsearch.helpers import scan
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'elasticsearch.helpers'
Но теперь, если я иду в папке пакетов участка cd /env/lib/python3.5/site-packages
и запустить питон консоль отсюда, импорт будет работать.
Я действительно не знаю, почему это происходит, любая помощь будет оценена по достоинству.