Ubuntu 14.04上的Vim使用了一个有趣的python路径,python无法在其他模块中导入_io

时间:2016-11-13 19:05:16

标签: python linux vim

突然(可能是在更新软件包之后)vim停止使用YouCompleteMe并抛出:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python2.7/io.py", line 51, in <module>
    import _io
ImportError: No module named _io

(当我尝试使用:python import io从vim内部导入io时也会发生这种情况。)

我在过去几个小时里一直在争夺这个问题,不知道问题是什么,重新安装了python和vim好几次,无论是来源还是来自aptitude都没有区别。我注意到,与命令行相比,vim中的python使用了一个有趣的路径:

~$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys; print sys.path
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode']
>>> 

来自vim:

:python import sys; print sys.path
['/usr/lib/python27.zip', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '
/usr/lib/python2.7/lib-dynload', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-pa
ckages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode', '_vim_path_']

我没有使用virtualenv(我注意到有人因virtualenv设置而遇到此问题)。

还必须指出Python在命令行中工作得非常好,我可以在启动解释器时愉快地导入io,并且这种情况发生在从源代码编译的vim 8和从aptitude编译的vim-nox。

python如何在vim中看到path这是一个问题吗?我知道如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

YouCompleteMe提供了g:ycm_server_python_interpreter选项来设置特定的解释器。

只需将let g:ycm_server_python_interpreter = path/to/your/interpreter中的.vimrc添加到您喜欢的解释器的路径即可。