在激活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插件并没有消除错误。
我已经使用同时使用Python 2和Python 3的virtualenvs进行了尝试。错误相同。
答案 0 :(得分:1)
我相信您在var shelljs = require( 'shelljs' )
var returns = shelljs.exec("passwd", {shell: '/bin/bash'}, {stdio:'inherit'});
行之前的init.vim中有一些python代码,并且在启动nvim时,在知道要使用哪个解释器之前,该代码正在尝试执行。
(至少我在战斗半天时遇到了同样的问题)
因此,只需将上述行放在python代码之前即可。
答案 1 :(得分:0)
在我的情况下,按照其他答案的建议将g:python3_host_prog = "~/.virtualenvs/neovim-python3-venv/bin/python3"
放在前面是无效的。
相反,删除软件包并再次安装可以解决此问题。
答案 2 :(得分:0)
我有一个类似的问题已解决。
我正在使用香草 vim 。并且基于this线程,~/.vimrc
已从python3开始删除。由于您的python解释器是python3,因此这会导致vim / nvim出现。
我研究了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))
:
{{1}}
Vim再次保持一致性。