¿Por qué ejecutar lldb con HomeBrew Python 2 instalado produce ImportError y NameErrors?

Actualicé vimcon HomeBrew a la versión 7.4.1952 en OS X 10.11.6. Instaló python 2 como un paquete de dependencia (las partes resumidas de la salida se muestran mediante ...):

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

Ahora, cuando intento ejecutar lldb, produce ImportError y 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)

Este es mi $PATHshell en zsh:

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

¿Cómo puedo solucionar estos errores?

Respuestas (2)

Instalé sixel módulo con pipel administrador de paquetes de python y resuelve el problema:

$ 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)

La Apple lldb(de /usr/bin/lldb) espera y exige /usr/bin/python. Desafortunadamente, no usa esta ruta absoluta para invocarlo, sino solo python.

Por lo tanto, con un Python 2 también instalado por Homebrew en el interior /usr/local/binque está en la parte frontal de su PATHApple lldbobtiene un Python 2 inesperado que puede introducir errores como falta de paquetes esperados o peor.

Lo seguro es pues llamar lldbcon un diferente PATH:

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

O incluso configurar un script de alias o contenedor, por ejemplo:

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