首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jedi-vim自动完成python3.6virtualenv不工作

Jedi-vim自动完成python3.6virtualenv不工作
EN

Stack Overflow用户
提问于 2018-01-24 22:08:08
回答 1查看 1.9K关注 0票数 3

我在jedi-vim repo上观察了一些问题,我发现了: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的文件。

有没有人有办法做到这一点,我已经寻找了很长一段时间,但没有找到任何东西。

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2018-10-11 16:15:31

我在我的pyenv-virtualenv,vim和jedi设置下工作了很长时间。希望能对你有所帮助。

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

代码语言:javascript
复制
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
...
Plugin 'davidhalter/jedi-vim' 
call vundle#end()            

接下来,我在~/.vimrc中添加了以下python3代码,以分别从pyenv/virtualenv目录中搜索和添加包。遗憾的是,没有activate_this.py脚本可以自动执行此操作

代码语言:javascript
复制
  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。您可以使用以下命令在您的终端中安装它们:

代码语言:javascript
复制
pip3 -install jedi and 
pip3 -install vim

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

代码语言:javascript
复制
set omnifunc=jedi#completions
let g:jedi#force_py_version = '3'

在启动vim之前,请确保使用pyenv activate切换到pyenv环境。只有在这之后,自动补全才能工作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48424438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档