Windows上的python libclang绑定无法从崇高文本初始化翻译单元

简短描述 :使用libclang来自动完成代码不能用与Sublime Text 3捆绑在一起的Python。

细节 :一个小的可证实的例子是在Github的回购

从本质上讲,有一个脚本,使用略有变化的cindex.py (兼容python 3和clang 3.8),并从testing源文件构build翻译单元。 然后它将其解决并尝试完成。

该脚本按照预期使用Powershell的Python 3.3.5。

在Sublime Text 3中放入Packages文件夹时,会产生错误。 由Sublime Text 3报告的Python版本是3.3.6。 错误:

 Traceback (most recent call last): File "C:\Program Files\Sublime Text 3\sublime_plugin.py", line 78, in reload_plugin m = importlib.import_module(modulename) File "./python3.3/importlib/__init__.py", line 90, in import_module File "<frozen importlib._bootstrap>", line 1584, in _gcd_import File "<frozen importlib._bootstrap>", line 1565, in _find_and_load File "<frozen importlib._bootstrap>", line 1532, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 584, in _check_name_wrapper File "<frozen importlib._bootstrap>", line 1022, in load_module File "<frozen importlib._bootstrap>", line 1003, in load_module File "<frozen importlib._bootstrap>", line 560, in module_for_loader_wrapper File "<frozen importlib._bootstrap>", line 868, in _load_module File "<frozen importlib._bootstrap>", line 313, in _call_with_frames_removed File "C:\Users\igor\AppData\Roaming\Sublime Text 3\Packages\test_clang\script.py", line 21, in <module> tu = TU.from_source(filename=filename) File "C:\Users\igor\AppData\Roaming\Sublime Text 3\Packages\test_clang\clang\cindex38.py", line 2372, in from_source raise TranslationUnitLoadError("Error parsing translation unit.") clang.cindex38.TranslationUnitLoadError: Error parsing translation unit. 

发生这种情况是因为cindex.py中的cindex.py返回的ptr转换单元是None 。 对我来说唯一奇怪的是,它只发生在与崇高的文本捆绑在一起的python 3。

它也发生在其他人身上吗? 有没有人有任何想法可能是什么原因或如何debugging?

如果你不能运行这里提供的例子,也可以随时ping我。

UPD:在testing项目的问题中,我们发现它不是捆绑在崇高文本中的ctypes。 将崇高文本replace为系统中安装的文本会产生相同的错误。

UPD2:我已经将testing库中的cindex.py文件剥离,只包含运行到问题中所述相同问题所需的最less代码。 也许这将有助于产生新的想法什么是错的? 另外,我想明确指出,在Linux和OSX上,相同的代码的工作方式与预期完全相同。

Solutions Collecting From Web of "Windows上的python libclang绑定无法从崇高文本初始化翻译单元"

不幸的是,现在这个问题的答案是,这是由于Python 3.3中的一个bug与Sublime Text 3捆绑在一起的。请参阅Sublime Text论坛上的讨论。

这意味着我们不会看到一个修复,直到一个版本的崇高的文本来与一个新的Python捆绑在其中。