2016-06-12 50 views
4

简短说明:使用libclang自动完成代码不使用Python的工作,自带的崇高文字3.蟒蛇libclang绑定无法从崇高文本初始化一个翻译单元

详细捆绑:小可证实的例子是在回购Github

从本质上讲,有一个脚本,使用略有变化cindex.py(兼容python 3和叮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. 

发生这种情况,因为PTR到tranlation单元由libclang内cindex.py返回为None。唯一让我感到奇怪的是,它只发生在与崇高文本捆绑在一起的python上。

这是否也发生在其他人身上?有没有人有任何想法可能是什么原因或如何调试?

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

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

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

回答

0

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

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