2016-06-12 10 views
4

Краткое описание: с помощью libclang автозаполнение кода не работает с питоном, который поставляется в комплекте с Sublime Text 3.питон libclang привязок на Windows, не инициализировать единицы перевода из возвышенного текста

Подробности: Небольшой проверяемый пример находится в репо на Github

В сущности, есть скрипт, который использует слегка измененный cindex.py (совместимый с python 3 и clang 3.8) и строит модуль перевода из тестового исходного файла. Затем он повторяет его и пытается завершить.

Сценарий работает как ожидается при использовании Python 3.3.5 от Powershell.

При попадании в папку Пакеты на Sublime Text 3 появляется сообщение об ошибке. Версия Python, о которой сообщает Sublime Text 3, - 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 в комплекте с возвышенным текстом.

Это происходит и с другими людьми? Кто-нибудь знает, что может быть причиной или как его отладить?

Также не стесняйтесь пинговать меня, если вы не можете запустить приведенный здесь пример.

UPD: В вопросах тестового проекта мы выяснили, что это не ctypes, который связан с возвышенным текстом. Замена тех, что из возвышенного текста, на те, которые установлены в системе, вызывает ту же ошибку.

UPD2: Я урезанная файл cindex.py в тестовом репозитории содержит только необходимый минимум кода, который необходим для запуска в том же номер, как описано в этом вопросе. Может быть, это поможет генерировать новые идеи о том, что может быть неправильным? Кроме того, я хочу прямо указать, что тот же код работает точно так, как ожидалось как на Linux, так и на OSX.

ответ

0

К сожалению, на данный момент ответ на этот вопрос состоит в том, что это связано с ошибкой в ​​Python 3.3, которая связана с Sublime Text 3. См. discussion на форуме Sublime Text.

Это означает, что мы не увидим исправления до тех пор, пока не будет выпущена версия возвышенного текста с новым питоном, входящим в нее.