如何更改jedi-vim使用的python解释器


10

我已经Anaconda(包括python3.5.2),VIM(7.4)并Jedi-VIM安装在我的系统上。python默认情况下,Linux系统上还安装了一个。

自动补全至少在基本软件包上起作用。但是对于像这样的软件包numpy(包含在中Anaconda),无法完成。

在中使用以下命令VIM

:py3 import sys; print(sys.path)

['/usr/lib/python35.zip', 
'/usr/lib/python3.5', 
'/usr/lib/python3.5/plat-x86_64-linux-gnu', 
'/usr/lib/python3.5/lib-dynload', 
'/usr/local/lib/python3.5/dist-packages', 
'/usr/lib/python3/dist-packages', 
'_vim_path_']

这向我表明,Anaconda-python从未使用过解释器和软件包jedi-vim

$which python
/home/user1/anaconda3/bin/python

我怎样才能让jedi-vim也使用anaconda python的路径来获取包自动完成功能?

Answers:


8

我自己可以通过使用变量提供文件夹中jedi-vim软件包的位置来修复它,如下所示:anaconda$PYTHONPATH

export PYTHONPATH=$PYTHONPATH:/home/user1/anaconda3/lib/python3.5/site-packages

谢谢大家!

或在〜/ .bash_profile中添加以下行

export PYTHONPATH=$PYTHONPATH:/home/user1/anaconda3/lib/python3.5/site-packages


谢谢!添加export PYTHONPATH="/home/user-name/anaconda3/lib/python3.5/site-packages":$PYTHONPATH到我的~/.zshrcjedi-vim可以与anaconda一起正常使用。
joelostblom

5
你不应该那样做。这可能会导致SEGFAULT。这很危险。
戴夫·霍尔特

@DaveHalter当您说这可能导致SEGFAULT时,您是指答案中提出的内容还是先前评论中提出的内容?另外,你知道为什么会发生段错误?
Jack Kinsella

1
@JackKinsella Python版本需要匹配,否则导入已编译的模块时,您将加载不同的版本。但是,我在下面更新了我的答案。绝地现在有了环境,这一切都可以轻松实现。
Dave Halter

4

你不能 该:python:python3命令始终使用编译时的口译。如果您具有动态加载python和/或python3动态加载的Vim的最新版本(请参见参考资料:h python-dynamic),则可以使用pythondllpythonthreedll加载不同的解释器,但是IMO要求Segfaults是用Anaconda代替CPython(前提是Vim完全接受它)。


3

2018+ Jedi版本

:let jedi#force_py_version=3.8例如,如果要切换到最新的Python版本,则可以使用。不幸的是,jedi-vim中还没有列出环境。我们需要构建它(尽管它在Jedi中可用)。


旧答案

基本上,您当前唯一能做的就是用Python 3.5支持编译VIM。那可能是一个愚蠢的主意,但它可行。

否则,将通过https://github.com/davidhalter/jedi/issues/385支持跨Python版本。

请注意,可能可以修改Python PATH,但这可能会导致SEGFAULT和其他不良行为,因为您基本上是在允许Jedi从其他Python版本运行二进制代码(是的,实际上是这样)。


1

您可以使用anaconda编译vim:我做到了./configure --with-features=huge --enable-pythoninterp --with-python-config-dir=~/anaconda/lib/python2.7/config/,我记得我后来做了类似的测试,并且:py import sys; print sys.path给了我正确的结果。

根据网络搜索,您可能可以执行以下操作(例如3.4):

./configure --enable-python3interp --with-features=huge --with-python3-config-dir=~/anaconda/lib/python3.4/config-3.4m-x86_64-linux-gnu


1

David对于将Vim与不同风格的Python混合在一起是有道理的,如果PYTHONPATH.profile/ .bashrc确实对Anaconda Python进行硬编码确实导致SEG 11,则可以使用shell别名。

alias vim3='PYTHONPATH=/usr/lib/Anaonda/.../site-packages vim'

也许这种解决方法就足够了。


1

我使用32位vim来与其他扩展兼容,但是出于其他原因,我的PATH首先使用了64位python。因此,我通过以下方式使用conda安装了32位python

set CONDA_FORCE_32BIT=1
conda create -n py27_32bit python=2.7
activate py27_32bit
pip install jedi
deactivate

并将其添加到我的.vimrc

if has('win32')&& isdirectory('C:/Users/USER/AppData/Local/Continuum/anaconda2/envs/py27_32bit/')
    let $PATH = 'C:/Users/USER/AppData/Local/Continuum/anaconda2/envs/py27_32bit/;
                \C:/Users/USER/AppData/Local/Continuum/anaconda2/envs/py27_32bit/lib/;' . $PATH
    let $PYTHONPATH = 'C:/Users/USER/AppData/Local/Continuum/anaconda2/envs/py27_32bit/;
                \C:/Users/USER/AppData/Local/Continuum/anaconda2/envs/py27_32bit/DLLs/;
                \:/Users/USER/AppData/Local/Continuum/anaconda2/envs/py27_32bit/lib/;' 
endif 

C:/Users/USER/AppData/Local/Continuum/anaconda2通话的结果在哪里conda info --base

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.