Warum führt das Ausführen von lldb mit installiertem HomeBrew Python 2 zu ImportError und NameErrors?

Ich hatte vimmit HomeBrew auf Version 7.4.1952 auf OS X 10.11.6 aktualisiert. Es installierte Python 2 als Abhängigkeitspaket (Zusammengefasste Teile der Ausgabe werden durch angezeigt ...):

$ brew upgrade vim
...
==> Installing vim dependency: python
🍺   /usr/local/Cellar/python/2.7.11: 4,949 files, 66.6M
...

Wenn ich jetzt versuche zu starten lldb, erzeugt es ImportError und NameErrors:

$ lldb myExecutableFile
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Resources/Python/lldb/__init__.py", line 98, in <module>
    import six
ImportError: No module named six
(lldb) target create "myExecutableFile"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
NameError: name 'run_one_line' is not defined
Traceback (most recent call last):
  File "<string>", line 1, in <module>
NameError: name 'run_one_line' is not defined
...
Current executable set to 'myExecutableFile' (x86_64).
(lldb)

Dies ist meine $PATHin zsh-Shell:

/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Wie kann ich diese Fehler beheben?

Antworten (2)

Ich habe sixdas Modul mit pipdem Python-Paketmanager installiert und es löst das Problem:

$ pip install six
Collecting six
  Using cached six-1.10.0-py2.py3-none-any.whl
Installing collected packages: six
Successfully installed six-1.10.0

$ lldb myExecutableFile
(lldb) target create "myExecutableFile"
Current executable set to 'myExecutableFile' (x86_64).
(lldb)

Der Apple lldb(von /usr/bin/lldb) erwartet und verlangt /usr/bin/python. Leider verwendet es nicht diesen absoluten Pfad, um es aufzurufen, sondern nur python.

Mit einem ebenfalls von Homebrew installierten Python 2, /usr/local/bindas sich vor Ihrem Apple befindet, erhält PATHApple lldbdaher ein unerwartetes Python 2, das Fehler wie fehlende erwartete Pakete oder Schlimmeres verursachen kann.

lldbDas Sichere ist also , mit einem anderen anzurufen PATH:

$ PATH=/usr/bin:$PATH lldb ...

Oder konfigurieren Sie sogar ein Alias- oder Wrapper-Skript, z.

$ alias lldb='PATH=/usr/bin:$PATH lldb'