neovim: нет модуля с именем __future__

Когда я пытаюсь открыть определенные файлы Python в Neovim, я получаю сообщение об ошибке:

"pool.py" 667L, 25276C
function provider#python#Call[9]..remote#host#Require[10]..provider#pythonx#Require, line 15
Vim(if):ch 1 was closed by the client
Traceback (most recent call last):
  File "/home/user/.pyenv/versions/neovim2/lib/python2.7/site.py", line 67, in <module>
    import os
  File "./os.py", line 44, in <module>
    from __future__ import absolute_import
ImportError: No module named __future__
Failed to load python host. You can try to see what happened by starting nvim with $NVIM_PYTHON_LOG_FILE set and opening the generated log file. Also
, the host stderr is available in messages.
Press ENTER or type command to continue

Это происходит каждый раз, когда я открываю файл python в каталоге, который содержит os.py или же os.pyc файл. Похоже, что neovim пытается импортировать локальный файл os.py вместо файла в virtualenv.

Что я могу сделать по этому поводу?

РЕДАКТИРОВАТЬ: оказывается, это не когда я открываю файл в том же каталоге, что и os.py файл, это когда я открываю файл в любом месте, в то время как текущий рабочий каталог имеет os.py файл. По сути, похоже, что python проверяет локальный каталог на предмет импорта перед проверкой библиотек python.

1 ответ

Решение

Я понял. Проблема была с моим $PYTHONPATH, Я имел в своем .bashrc подать это:

export PYTHONPATH="$PYTHONPATH:~/.local/lib/python"

Проблема заключалась в том, что, когда эта строка выполняется, $PYTHONPATH пуст, что приводит к строке, начинающейся с :, Я не уверен на 100%, почему, но это привело к тому, что python проверяет локальный каталог на наличие модуля ДО проверки библиотек python.

Я изменил это на

if [ -z "$PYTHONPATH" ]; then
  export PYTHONPATH="~/.local/lib/python"
else
  export PYTHONPATH="$PYTHONPATH:~/.local/lib/python"
fi

И теперь это работает.

Другие вопросы по тегам