Ошибка запуска 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 ответа

Это решило мою проблему

pip install --upgrade docker-py

,

Ошибка связана с тем, что 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.

sudo pip install --ignore-installed six

источник

Другие вопросы по тегам