Ошибка запуска docker-compose не может импортировать имя _thread
Для всех хороших парней, которые пытаются начать работу над docker-compose. Я использую OS X El Capitan (10.11).
Система поставляется с Python 2.7. Попытка заменить системный python на python 3 не рекомендуется, поскольку многие основные системы зависят от библиотек python 2.
Установил Docker для Mac и docker-compose, используя docker в командной строке.
Переход к терминалу: "docker-compose --version" выдает ошибку:
admins-MacBook-Pro-63:~ apil.tamang$ docker-compose --version
Traceback (most recent call last):
File "/usr/local/bin/docker-compose", line 9, in <module>
load_entry_point('docker-compose==1.8.1', 'console_scripts', 'docker-compose')()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 357, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 2394, in load_entry_point
return ep.load()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 2108, in load
entry = __import__(self.module_name, globals(),globals(), ['__name__'])
File "/Library/Python/2.7/site-packages/compose/cli/main.py", line 17, in <module>
from ..bundle import get_image_digests
File "/Library/Python/2.7/site-packages/compose/bundle.py", line 14, in <module>
from .service import format_environment
File "/Library/Python/2.7/site-packages/compose/service.py", line 31, in <module>
from .parallel import parallel_execute
File "/Library/Python/2.7/site-packages/compose/parallel.py", line 10, in <module>
from six.moves import _thread as thread
ImportError: cannot import name _thread
Чем ты занимаешься? Просто установка python3 не исправит это!
2 ответа
Ошибка связана с тем, что python не может найти "шесть" модулей. Сначала я сделал:
sudo pip install six -U //updates the six modules in python
Это не помогло лучше, поэтому я сделал следующее с моего терминала:
python -c 'import six; print(six.__version__)'
Для меня это распечатано следующее:
/usr/local/bin/python2.7/site-packages/
вот что дало мне знать, ГДЕ были расположены мои шесть модулей. Теперь, если вы посмотрите на стек ошибок из python, который я разместил в начале этого вопроса, вы увидите, что все действия происходят в папке: /Library/Python/2.7/site-packages. Это был АГАА! момент для меня. По какой-то причине файлы python для docker-compose были установлены в этой папке, а НЕ в моем системном пути к python (т.е. / usr / local / bin / python). Я не имею понятия почему!
Затем мне пришлось скопировать six.py и six.pyc в / Library, используя следующую команду:
cp /usr/local/bin/python2.7/site-packages/six.* /Library/Python/2.7/site-packages
Ребята, проведите небольшое исследование, не сдавайтесь! Не вводите вслепую команды выше. Короче говоря, копирование файла в /Library/Python/2.7/site-packages делает дело, и теперь я на пути к использованию docker-compose.