我正在使用带有Ubuntu 16.04 Xenial和Python 3.5.2虚拟环境的 docker 容器。每次我尝试初始化服务器 uWSGI 时,都会收到以下 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 容器内手动运行 bash,以查看模块有什么问题。通过pip list
在虚拟环境中运行,我可以判断软件包已正确安装:
# pip list
elasticsearch (2.1.0)
elasticsearch-dsl (0.0.8)
运行sys.path显示站点包文件夹已正确添加到 python 路径:
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'
]
文件夹elasticsearch.helpers中有一个__init__.py文件,所以这不是问题。如果我尝试从 Python 控制台导入,它也会失败:
from elasticsearch.helpers import scan
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'elasticsearch.helpers'
但是现在如果我转到 site-packages 文件夹cd /env/lib/python3.5/site-packages
并从这里运行 python 控制台,导入将起作用。
我真的不知道为什么会这样,任何帮助将不胜感激。