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

时间:2015-07-05 18:34:08

标签: python linux vim tab-completion jedi-vim

问题出在Arch(1)& Debian Jessie(2)其中:

1

> uname -r
4.0.5-1-ARCH
> echo $PYTHONPATH
/usr/lib/python2.7/
  1. Debian Jessie没有PYTHONPATH设置。
  2. 我的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 subclasses are not detected on TAB-completion in Arch Linux

    发送给jedi-vim的

2 个答案:

答案 0 :(得分:1)

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

wrongway

当我使用带有完成标签的ipython时这是很自然的:

ipython

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

rightway

最后,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用户澄清这一点。

答案 1 :(得分:0)

旧问题,但如果您使用虚拟环境,我找到了修改sys.path的替代方法。

您可以在.pth文件夹中创建指向源根目录的<virtualenv>/lib/<python>/site-packages https://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'

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