问题出在Arch(1)& Debian Jessie(2)其中:
1
> uname -r
4.0.5-1-ARCH
> echo $PYTHONPATH
/usr/lib/python2.7/
我的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的答案 0 :(得分:1)
我刚刚意识到由于我的不理解而犯了一个错误。我试图导入以下方式:
当我使用带有完成标签的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用户澄清这一点。
答案 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应该能够找到你的代码。