Jedi-vim自动补全在Python3.6虚拟环境中无法工作

3
我一直在关注jedi-vim仓库的一些问题,发现了这个链接:https://github.com/davidhalter/jedi-vim/issues/704https://github.com/davidhalter/jedi/pull/829/files
我尝试将venv中的lib重命名为python3.5,虽然自动补全可以正常工作,但运行任何Python文件都会出错(因为我改变了库的名称,所以这很正常)。
至于其他解决方案,我在我的vundle目录中找不到任何名为 jedi/evaluate/sys_path.py 的文件。
是否有人有想法使它工作?我已经搜索了相当长的时间,但仍然找不到任何东西。
谢谢。

我建议您更详细地描述您的问题和/或提供代码示例。 - builder-7000
1个回答

3

经过长时间的使用pyenv-virtualenv、vim和jedi设置,我终于让它运行起来了。希望能对你有所帮助。

首先,在~/.vimrc文件中的Vundle块中添加jedi-vim插件:

set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
...
Plugin 'davidhalter/jedi-vim' 
call vundle#end()            

接下来,我在 ~/.vimrc 中添加了以下 Python3 代码,以便单独搜索并添加 pyenv/virtualenv 目录中的包。不幸的是,没有 activate_this.py 脚本可以自动完成此操作。

  py3 << EOF
  import os.path
  import sys
  import vim
  import jedi
  if 'VIRTUAL_ENV' in os.environ:
      base = os.environ['VIRTUAL_ENV']
      site_packages = os.path.join(base, 'lib', 'python%s' %  sys.version[:3], 'site-packages')
      prev_sys_path = list(sys.path)
      import site
      site.addsitedir(site_packages)
      sys.real_prefix = sys.prefix
      sys.prefix = base
      # Move the added items to the front of the path:
      new_sys_path = []
      for item in list(sys.path):
          if item not in prev_sys_path:
          new_sys_path.append(item)
          sys.path.remove(item)
      sys.path[:0] = new_sys_path
   EOF

请确保您的本地 Python 环境能够运行 import jedi 和 import vim 命令。您可以在终端中使用以下命令进行安装:

pip3 -install jedi and 
pip3 -install vim

最后,我在vimrc文件中设置了以下值:

set omnifunc=jedi#completions
let g:jedi#force_py_version = '3'

在启动vim之前,请确保您已使用pyenv activate切换到您的pyenv环境。只有这样,自动完成才能正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接