簡短說明:使用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上的工作方式與預期完全相同。