Windows上的python libclang绑定无法从崇高文本

时间:2016-06-12 13:06:59

标签: python windows python-3.x sublimetext3 libclang

简短说明:使用libclang自动完成代码不适用于Sublime Text 3捆绑的python。

详细信息Github

上的回购中有一个可验证的小例子

本质上,有一个脚本使用稍微改变的cindex.py(与python 3和clang 3.8兼容)并从测试源文件构建翻译单元。然后它重新解析它并试图完成。

该脚本在使用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内的libclang返回的ptr到tranlation单位是None。对我来说唯一奇怪的是它只发生在与sublime text 3捆绑在一起的python。

它也会发生在其他人身上吗?有没有人知道可能的原因或如何调试它?

如果您无法运行此处提供的示例,也可以随意ping我。

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

UPD2:我已经删除了测试存储库中的cindex.py文件,只包含了遇到问题所述相同问题所需的最少代码。也许这有助于产生关于可能出错的新想法?另外,我想明确指出,相同的代码在Linux和OSX上完全按预期工作。

1 个答案:

答案 0 :(得分:0)

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

这意味着我们不会看到修复此问题,直到每个版本的sublime文本附带更新的python为止。