2016-07-31 74 views
0
-- Omni completion (^O^N^P) Pattern not found 

這是當我查看Vim中的消息時得到的錯誤。使用Jedi-vim自動完成給出錯誤

Please install Jedi if you want to use jedi-vim. 
The error was: dlopen(/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so, 2): Symbol not found: __PyCodecInfo_GetIncrementalDecoder^@ Referenced fro 
m: /usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so^@ Expected in: flat namespace^@ in /usr/local/Cellar/python/2.7.12/Frameworks/Python.framework 
/Versions/2.7/lib/python2.7/lib-dynload/_io.so 

Press ENTER or type command to continue 

但我已經使用PIP

$ pip freeze 
jedi==0.9.0 
vboxapi==1.0 

我試圖從運行VIM :python import jedi;,它提供了以下錯誤安裝絕地武士:

Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
    File "/usr/local/lib/python2.7/site-packages/jedi/__init__.py", line 41, in <module> 
    from jedi.api import Script, Interpreter, NotFoundError, set_debug_function 
    File "/usr/local/lib/python2.7/site-packages/jedi/api/__init__.py", line 16, in <module> 
    from jedi.parser import Parser, load_grammar 
    File "/usr/local/lib/python2.7/site-packages/jedi/parser/__init__.py", line 22, in <module> 
    from jedi.parser import tokenize 
    File "/usr/local/lib/python2.7/site-packages/jedi/parser/tokenize.py", line 16, in <module> 
    from io import StringIO 
    File "/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/io.py", line 51, in <module> 
    import _io 
ImportError: dlopen(/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so, 2): Symbol not found: __PyCodecInfo_GetIncrementalDecoder 
    Referenced from: /usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so 
    Expected in: flat namespace 
in /usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so 

Python從我的命令 - 線顯示以下版本

>>> import sys 
>>> sys.version 
'2.7.12 (default, Jun 29 2016, 14:05:02) \n[GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)]' 
>>> 

但是從Vim中,如果運行以下命令

:python import sys; print sys.version 

它輸出

2.7.10 (default, Oct 23 2015, 19:19:21) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] 

現在我該如何更新Vim是使用Python? /這裏發生了什麼,我該怎麼做來解決它?

回答

1

這是因爲安裝在Mac上的2個版本蟒蛇發生。 一個默認來的程序駐留在/ usr/bin目錄下,並且是2.7.10版本。我使用brew安裝的是在/ usr/local/bin目錄下,並且是2.7.12版本。

Vim正在使用2.7.10版本,但在brew安裝軟件包的文件夾中查找軟件包。 所以我做了一個brew卸載python,一切工作正常。

(但我失去了PIP和PIP通過安裝了所有的包。我應該更小心)

0

我安裝了帶有病原體的jedi-vim,它現在可以工作。

pip install --user jedi 
cd ~/.vim/bundle/ 
git clone https://github.com/davidhalter/jedi-vim.git 

您還可以運行這個

sudo apt-get install vim-python-jedi 

這應該有助於

+0

我安裝了它使用Vundle,我以爲會做克隆,一旦我添加將'Plugin'davidhalter/jedi-vim''行添加到我的.vimrc中,然後運行PluginInstall。 –

+0

sudo apt-get install vim-python-jedi – LychmanIT

+0

我已刪除此插件並使用此命令再次安裝。 – LychmanIT

0

卸載是不是在我的情況的解決方案,VIM在開始的時候抱怨,未發現蟒蛇支持 我做了以下內容:

cd /usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/ 

mv _io.so _io.so.orig 
cp /usr/lib/python2.7/lib-dynload/_io.so ./ 

(我已經建立了vim8從源頭 - 從github.com/vim/vim.git)

./configure --enable-pythoninterp --with-python-config-dir=/usr/lib/python2.7/config/ 

make 

sudo make install) 
0

至少對於ü buntu 16.04,這是因爲默認的Vim包是針對Python 3.5編譯的。爲了得到這個錯誤固定,除了相關的包絕地,你需要安裝您有任何關於Vim的和安裝下列包東西:

sudo apt-get install vim-addon-manager vim-common vim-gnome-py2 \ 
vim-gtk3-py2 vim-gui-common vim-nox-py2 vim-python-jedi vim-runtime