如何在Mac上用Python 3导入LLDB?

5

我很难找到关于此问题的好文档,甚至无法确认LLDB是否应该与Python 3一起使用(请参阅LLDB-Python参考)。

当尝试以下方式加载它时:

import sys
sys.path.append('/Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Resources/Python')
import lldb

这个代码可以在 Python 2(具体来说是 2.7)中运行,但在 Python 3(具体来说是 3.6)中会出现错误(完整的堆栈跟踪请见文末):

ImportError: dynamic module does not define module export function (PyInit__lldb)

有什么办法可以在Python 3中导入lldb吗?


全栈:

ImportError                               Traceback (most recent call last)
<ipython-input-3-2a8839b33e40> in <module>()
----> 1 import lldb

/Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Resources/Python/lldb/__init__.py in <module>()
     48                 fp.close()
     49             return _mod
---> 50     _lldb = swig_import_helper()
     51     del swig_import_helper
     52 else:

/Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Resources/Python/lldb/__init__.py in swig_import_helper()
     44         if fp is not None:
     45             try:
---> 46                 _mod = imp.load_module('_lldb', fp, pathname, description)
     47             finally:
     48                 fp.close()

~/Virtualenvs/py36/lib/python3.6/imp.py in load_module(name, file, filename, details)
    240                 return load_dynamic(name, filename, opened_file)
    241         else:
--> 242             return load_dynamic(name, filename, file)
    243     elif type_ == PKG_DIRECTORY:
    244         return load_package(name, filename)

~/Virtualenvs/py36/lib/python3.6/imp.py in load_dynamic(name, path, file)
    340         spec = importlib.machinery.ModuleSpec(
    341             name=name, loader=loader, origin=path)
--> 342         return _load(spec)
    343 
    344 else:

ImportError: dynamic module does not define module export function (PyInit__lldb)

三年过去了,我看到的情况还是一样的。关于这个问题几乎没有什么文档。pip3 search lldb 没有明显的结果。 - rustyMagnet
但是在/Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Resources/里面有一个名为python3的文件夹。 - rustyMagnet
1
@rustyMagnet,Python3从Xcode 11开始支持,不再支持Python2。https://developer.apple.com/videos/play/wwdc2019/429/?time=925 - Logachu
我在这里添加了一些指令,以便使用PyCharm使其正常工作:https://stackoverflow.com/questions/59591466/how-to-import-lldb-module-for-python-on-mac/64496558#64496558 - rustyMagnet
3个回答

4
据我所知,这种方法行不通。LLDB是针对Python 2.7构建的,而你无法将Python 2.x模块导入到Python 3.x中。
可以使用Python 3.x库构建自己的lldb副本-我们需要在Windows上这样做,因此源代码设置为可以使用任一版本进行构建。
我从未在Mac上尝试过,Xcode项目目前也没有设置使其工作,但这应该不难。如果您对此感兴趣并且有更多问题,请向lldb-dev邮件列表提问。

http://lists.llvm.org/mailman/listinfo/lldb-dev


2
阅读了这篇文章(https://lldb.llvm.org/resources/caveats.html)之后, 我成功地在10.15.4上使用XC 11.5。
xcrun python3
>>> import sys
>>> sys.path.append('/Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Resources/Python3')
>>> import lldb

在我的机器上,我进行了测试,没有必要执行xcrun python3(只需要python3即可),但是由于列出的注意事项,我将其保留了下来。关键是要使用专门为python3构建的lldb软件包。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接