2016-10-27 1 views
2

Für alle guten Fellows da draußen, die versuchen, auf docker-komponieren zu beginnen. Ich betreibe OS X El Capitan (10.11).docker-komponieren Startup-Fehler kann nicht importieren Name _thread

Das System wird mit Python 2.7 ausgeliefert. Der Versuch, das System Python durch Python 3 zu ersetzen, wird nicht empfohlen, da viele Kernsysteme von Python 2-Bibliotheken abhängig sind.

Installierte 'Docker' für Mac und 'docker-compose' über Andockfenster in der Befehlszeile.

Going to Terminal: 'Docker-compose --version' wirft Fehler:

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 

Was tun Sie? Nur die Installation von python3 repariert es nicht!

+0

verwenden Sie die erste compose installiert Befehl [hier] (https://docs.docker.com/compose/install/#/install-docker-compose) rechts gezeigt? – idjaw

+0

Ich bin mir nicht sicher, welche Methode ich verwendet habe. Wahrscheinlich benutzte es Pip, weil das am einfachsten scheint. –

+0

Ja, Sie installieren auf Systemebene mit dem Standard-Python. Ist das deine Absicht? Ich würde vorschlagen, dies in einem virtualenv stattdessen zu tun. Du * hast * erwähnt, dass du das in Python 3 machen willst. Warum also nicht einfach ein virtualenv in python 3 aufsetzen und pip in diesem virtualenv installieren? – idjaw

Antwort

0

Der Fehler rührt von der Tatsache her, dass Python die "sechs" Module nicht finden kann. Zuerst habe ich:

sudo pip install six -U //updates the six modules in python 

Das nicht besser helfen, so dass ich das folgende von meinem Terminal:

python -c 'import six; print(six.__version__)' 

Für mich dieses folgendes ausgedruckt:

/usr/local/bin/python2.7/site-packages/ 

Das ist es, was mich wissen lassen, wo meine sechs Module waren. Nun, wenn Sie sich den Fehler-Stack von Python anschauen, den ich am Anfang dieser Frage geschrieben habe, werden Sie sehen, dass alle Aktionen im Ordner: /Library/Python/2.7/site-packages ablaufen. Das war die AHAA! Moment für mich. Aus irgendeinem Grund wurden die Docker-Compose-Python-Dateien in diesem Ordner installiert und NICHT in meinem System-Python-Pfad (d. H./Usr/local/bin/python). Ich habe keine Idee warum!

Dann hatte ich six.py und six.pyc in das Verzeichnis/Library kopieren Sie den folgenden Befehl:

cp /usr/local/bin/python2.7/site-packages/six.* /Library/Python/2.7/site-packages 

ein wenig Forschung tun, hier Jungs, nicht aufgeben! Gib nicht blind die obigen Befehle ein. Lange Rede, kurzer Sinn, das Kopieren der Datei nach /Library/Python/2.7/site-packages erledigt den Deal und jetzt bin ich auf dem Weg zur Verwendung von docker-compose.

+0

Ich würde wahrscheinlich vermeiden, die System-Ebene Python 2.7 zu ändern. Dieser ist da als Voraussetzung für das OS. Der ideale Ansatz wäre hier wahrscheinlich ein virtualenv zu verwenden, um Systemraum nicht zu verschmutzen. – idjaw

+0

@idjaw Wenn Sie die "System" -Ebene Python gemeint haben, meinen Sie die in /usr/local/bin/python2.7/ .. 'Ja? Ich nahm an, dass das System Python für mich war.Ich las ein paar andere Threads über die Aktualisierung der "sechs" Module und niemand schien wirklich irgendwelche Probleme zu haben. –

+0

Rückblickend scheint der gesamte Zweck der "sechs" Module zu ermöglichen, dass Python 2 mit Python 3-abhängigen Bibliotheken zusammenarbeitet. Daher nehme ich zumindest an, dass ein Update (das "Sechs-Modul") nicht riskant wäre. Gut .. lass uns einfach warten und es herausfinden! Außerdem wusste ich nichts von "virtualenv", aber wenn ich zurückgehen und es wiederholen müsste, wie du gesagt hast, könnte ich das letztere jetzt verfolgen. –

0
sudo pip install --ignore-installed six 

source

+0

Obwohl dieser Code das Problem lösen könnte, sollte eine gute Antwort auch eine Erklärung enthalten. – BDL

Verwandte Themen