【问题标题】:neovim: no module named __future__neovim:没有名为 __future__ 的模块
【发布时间】:2018-05-18 12:55:38
【问题描述】:

当我尝试在 neovim 中打开某些 python 文件时,出现错误:

"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

每当我在包含os.pyos.pyc 文件的目录中打开python 文件时,都会发生这种情况。看起来 neovim 正在尝试导入本地 os.py 文件,而不是 virtualenv 中的文件。

对此我能做些什么?

编辑:结果不是当我在与os.py 文件相同的目录中打开文件时,而是当我在任何地方打开文件而当前工作目录有os.py 文件时。基本上,看起来 python 在检查 python 库之前检查本地目录是否有导入。

【问题讨论】:

  • 为什么会有一个名为os.py??????的文件

标签: python-2.7 virtualenv neovim pyenv


【解决方案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

现在它可以工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    • 2019-06-24
    • 2019-03-28
    • 2017-12-30
    • 2018-01-06
    • 2018-11-11
    • 2015-04-10
    相关资源
    最近更新 更多