在TAB完成时未检测到Jedi Vim Python子类

问题是Arch(1)和Debian Jessie(2)其中:

1。

> uname -r 4.0.5-1-ARCH > echo $PYTHONPATH /usr/lib/python2.7/ 
  1. Debian Jessie没有设置PYTHONPATH。

我的vim是用python编译的。

 :python import sys; print(sys.version) 2.7.10 (default, May 26 2015, 04:16:29) [GCC 5.1.0] 

我尝试了以下Arch Linux软件包:

 > pacman -S python2-jedi vim-jedi 

完成工作在类,但不是在子类。

 import os # os is built-in library. os. # ycm does not complete members of this class. 

我删除了他们,并下载了Git包。

 > cd ~/.vim/bundle/jedi-vim/jedi/test/ && ./run.py Summary: (0 fails of 962 tests) in 18.819s > cd ../ && ./setup build && ./setup install 

而且,完成对类而言是有效的,但不在子类中。

我以前的问题,把我从Vim YouCompleteMe Python子类的 jedi-vim发送到Arch Linux的TAB完成

Solutions Collecting From Web of "在TAB完成时未检测到Jedi Vim Python子类"

我刚刚意识到,由于我的不理解,我做了一个错误。 我试图导入以下方法:

错误的方法

当我使用ipython和tab完成时,这是很自然的:

IPython中

在Python脚本中导入模块是一种错误的方法。 这是正确的方法:

正确的方法

最后,Jedi-Vim插件完美工作。 如果与不可用导入有关的不确定性,您可以通过以下方式验证导入:

 :python import sys; print(sys.path) 

然后在运行时添加缺少的目录,以测试他们的缺席是否导致问题。

 :python import sys; sys.path.append("/path/to/dir") 

在我的情况下, os.py位于/usr/lib/python2.7/

我希望这将为未来的Jedi-Vim用户澄清。

老问题,但是我发现如果你使用的是虚拟环境,可以选择修改sys.path

您也可以在<virtualenv>/lib/<python>/site-packages文件夹中创建一个.pthhttps://docs.python.org/2/library/site.html )文件,该文件指向您的根目录源例如,如果我的来源是在/user/123/python-proj/source文件夹和我的虚拟环境在/user/123/python-proj/venv文件夹

 echo '/user/123/python-proj/source > /user/123/python-proj/venv/lib/python3.5/site-packages/my-source.pth' 

确保你先激活虚拟env,然后启动vim和jedi应该能够找到你的代码。