lldb python错误

时间:2013-03-17 04:21:16

标签: macos lldb

我尝试在我的Mac上运行lldb并在启动时获取此信息:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/System/Library/PrivateFrameworks/LLDB.framework/Versions/A/Resources/Python/lldb/embedded_interpreter.py", line 1, in <module>
    import readline
ImportError: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/readline.so: no appropriate 64-bit architecture (see "man python" for running in 32-bit mode)
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
Traceback (most recent call last):
  File "<string>", line 1, in <module>
NameError: name 'run_one_line' is not defined

我尝试添加环境变量VERSIONER_PYTHON_PREFER_32_BIT=yes,但仍会出现此错误。我认为lldb正在使用与Mac主机不同的python环境,那么我在哪里进行更改以使其使用32位模式?感谢。

更新:

我做了一个arch -i386 lldb,它的工作原理是32位。为了使它在64位工作,我为OS X安装了64位版本的python readline,但是对于termiostime等本机python库遇到了更多问题。所以我下载了python 2.7.3 64位安装程序DMG文件并安装了它的二进制文件;现在lldb最终在我的10.8山狮上以64位工作。感谢。

2 个答案:

答案 0 :(得分:4)

看起来您在系统的某个位置安装了/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/readline.so(我在Mac OS X 10.7.5安装中没有看到它,尽管它可能包含在10.8中),并且该dylib仅构建32位。您可以使用

确认
file /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/readline.so

在您的系统上。您可以尝试强制lldb也以32位模式运行(分发二进制文件构建为32- / 64-通用)但我建议从系统中删除仅32位readline.so,除非你真的需要它。

答案 1 :(得分:0)

为了让其他任何人都来寻找快速解决方案-Linus Oleander的答案对我有用-也就是说,运行

pip install six

对于为什么可行的猜测,我认为这可以消除lldb在具有“非标准” python安装的计算机上运行时面临的一些python不兼容问题。当使用Homebrew的llvm版本时,此方法也适用。