Vim с поддержкой окружения Python - PullRequest
6 голосов
/ 21 сентября 2011

Если я наберу в командной строке vim

:python import os;print os.getenv('PYTHONPATH')

Я получил путь Если я закрою vim и на том же терминале сделаю

echo $PYTHONPATH

Я получаю другой совершенно другой путь Почему это, где Vim получает этот путь? Это актуально, потому что автозаполнение не может найти модули, поэтому оно не работает. Я знаю это, потому что если я попытаюсь, снова из VIM Cli

:python import django

Не удалось Но если я выйду из vim и наберу

python
>>> import django

Ошибки не отображаются! Что тут происходит? Я использую virtualenv и проверил источник активации, а PYTHONPATH не изменился Я пробовал это без virtualenv, та же проблема.

Обновление: Строка, которую я использовал для настройки источника Vim до его компиляции

. / Configure --prefix = $ {HOME} / apps / vim73 --with-features = огромный --enable-gui = gnome2 --enable-pythoninterp --enable-rubyinterp --enable-multibyte --with-python-config-dir = / usr / lib / python2.6 / config

1 Ответ

4 голосов
/ 31 октября 2011

PYTHONPATH - это красная сельдь: это не то, что virtualenv использует для настройки. Virtualenv работает путем добавления префикса к PATH, который указывает на местоположение альтернативного python исполняемого файла, переопределяя систему python.

Проблема с Vim заключается в том, что встраивание Python не смотрит на исполняемый файл Python или PATH: оно ищет и загружает библиотеку libpython, которую virtualenv не виртуализирует. Это означает, что Vim всегда будет инициализировать системный Python, независимо от любого virtualenv.

Однако еще не все потеряно: Vim все еще может запустить скрипт инициализации virtualenv после своей собственной инициализации Python. Джереми Кантрелл написал плагин Vim для автоматизации этого процесса, который должен решить вашу проблему:

...