在Python虚拟环境处于活动状态时启动NeoVim时发生NameError

2024-04-30 06:26:45 发布

您现在位置:Python中文网/ 问答频道 /正文

当我在激活virtualenv的同时启动NeoVim时,会出现以下错误:

Error detected while processing function provider#python3#Call:
line   18:
Error invoking 'python_execute' on channel 3 (python3-script-host):
Traceback (most recent call last):
  File "<string>", line 6, in <module>
NameError: name 'execfile' is not defined
Press ENTER or type command to continue

这是我运行:checkhealth provider时看到的:


health#provider#check
========================================================================
## Clipboard (optional)
  - OK: Clipboard tool found: pbcopy

## Python 2 provider (optional)
  - INFO: pyenv: Path: /usr/local/Cellar/pyenv/1.2.16/libexec/pyenv
  - INFO: pyenv: $PYENV_ROOT is not set. Infer from `pyenv root`.
  - INFO: pyenv: Root: /Users/myname/.pyenv
  - INFO: Using: g:python_host_prog = "~/.pyenv/versions/2.7.16/envs/neovim-python2-venv/bin/python"
  - INFO: $VIRTUAL_ENV matches executable
  - INFO: Executable: /Users/myname/.pyenv/versions/2.7.16/envs/neovim-python2-venv/bin/python
  - INFO: Python version: 2.7.16
  - INFO: pynvim version: 0.4.1
  - OK: Latest pynvim is installed.

## Python 3 provider (optional)
  - INFO: pyenv: Path: /usr/local/Cellar/pyenv/1.2.16/libexec/pyenv
  - INFO: pyenv: $PYENV_ROOT is not set. Infer from `pyenv root`.
  - INFO: pyenv: Root: /Users/myname/.pyenv
  - INFO: Using: g:python3_host_prog = "~/.virtualenvs/neovim-python3-venv/bin/python3"
  - WARNING: $VIRTUAL_ENV exists but appears to be inactive. This could lead to unexpected results.
    - ADVICE:
      - If you are using Zsh, see: http://vi.stackexchange.com/a/7654
  - INFO: Executable: /Users/myname/.virtualenvs/neovim-python3-venv/bin/python3
  - INFO: Python version: 3.8.0
  - INFO: pynvim version: 0.4.1
  - OK: Latest pynvim is installed.

我不使用Zsh,我使用Bash。试图使用.bashrc中链接答案的代码片段并没有改变这种情况

当virtualenv激活时不启动NeoVim时,我没有收到错误

删除所有Vim插件并没有消除错误

我已经在同时使用Python2和Python3的VirtualNVs中尝试过这一点。错误是一样的


Tags: infopyenvhostbinvenvisversion错误
3条回答

我相信在init.vim中g:python3_host_prog = "~/.virtualenvs/neovim-python3-venv/bin/python3"行之前有一些python代码,当您启动nvim时,这些代码试图在知道要使用哪个解释器之前执行。 (至少我在这半天的战斗中遇到了同样的问题)

因此,只需将上述行放在python代码之前

我有一个类似的问题已经解决了

我正在使用香草vim。基于this线程,自python3以来execfile()已被删除。因为您的python解释器是python3,所以这会导致vim/nvim出现这种情况。 我已经研究了~/.vimrc,并用以下内容替换了a行execfile(activate_this, dict(__file__=activate_this))

with open(activate_this) as f:
    code = compile(f.read(), activate_this, 'exec')
    exec(code, dict(__file__=activate_this))

维姆又开始工作了

在我的例子中,把g:python3_host_prog = "~/.virtualenvs/neovim-python3-venv/bin/python3"放在另一个答案中建议的前面是不起作用的

相反,删除包并再次安装解决了问题

相关问题 更多 >