簡體   English   中英

TAB完成時未檢測到Jedi Vim Python子類

[英]Jedi Vim Python subclasses are not detected on TAB-completion

問題出在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完成時檢測到

我只是意識到由於我的不理解,我犯了一個錯誤。 我正在嘗試通過以下方式導入:

錯誤道

當我將ipython與制表符完成一起使用時,這很自然:

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'

確保先激活虛擬環境,然后啟動vim,並且jedi應該能夠找到您的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM