Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
选项卡完成时未检测到Jedi Vim Python子类_Python_Linux_Vim_Tab Completion_Jedi Vim - Fatal编程技术网

选项卡完成时未检测到Jedi Vim Python子类

选项卡完成时未检测到Jedi Vim Python子类,python,linux,vim,tab-completion,jedi-vim,Python,Linux,Vim,Tab Completion,Jedi Vim,本期发行的是Arch(1)和Debian Jessie(2),其中: 一, 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 完成对类有效,但对子类无效 im

本期发行的是Arch(1)和Debian Jessie(2),其中:

一,

  • 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
    
    同样,补全对类有效,但对子类无效

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

    我上一个问题把我从

    送到绝地维姆,我刚刚意识到我犯了一个错误,因为我不理解。我试图通过以下方式导入:

    当我使用ipython和tab补全时,这是很自然的,如下所示:

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

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

    :python import sys; print(sys.path)
    
    然后在运行时添加丢失的目录,以测试它们的缺失是否是导致问题的原因

    :python import sys; sys.path.append("/path/to/dir")
    
    在我的例子中,os.py位于/usr/lib/python2.7/


    我希望这能为未来的绝地Vim用户澄清这一点。

    这是一个老问题,但如果您使用虚拟环境,我找到了一个替代方法来修改
    sys.path

    您可以在
    /lib//site packages
    文件夹中创建一个指向源代码根的
    .pth
    ()文件,例如,如果我的源代码位于
    /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应该能够找到您的代码。

    您能提供一次完成后的
    :mes
    :scriptnames
    :set omnifunc
    ?顺便说一句:绝地维姆和YCM都在使用机罩下的绝地。谢谢你的时间。是的,我知道绝地维姆和YCM都依赖绝地。我在这两个网站上都发布了帖子,以提高知名度。这是奇怪的输出,我的
    :scriptnames
    还有很多绝地维姆的东西在加载,其中
    绝地维姆/autoload/jedi.vim
    ,肯定在那里。我想它在14:。而且,在一次完成之后,我有一个不同的输出。看看我新输出的14,25,26,28,31。这两个输出都来自Debian Jessie。@DaveHalter我刚刚意识到这是由于我的不理解。检查下面我的答案!