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
И теперь это работает.