2016-06-12 45 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捆綁在其中。