jedi-vim에서 사용하는 파이썬 인터프리터를 변경하는 방법


10

나는이 Anaconda(python3.5.2 포함) VIM(7.4) Jedi-VIM내 시스템에 설치되어 있어야합니다. python기본적으로 리눅스 시스템 에도 설치되어 있었습니다 .

자동 완성은 최소한 기본 패키지에서 작동합니다. 그러나 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이 패키지 자동 완성을 얻기 위해 아나콘다 파이썬의 경로를 사용하도록하려면 어떻게해야합니까?

답변:


8

다음과 같이 변수를 사용하여 jedi-vimanaconda폴더 의 패키지 위치를 제공 하여 직접 해결할 수있었습니다 $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내에 ~/.zshrc아나콘다 제대로 작동에 도착 제다이-정력.
joelostblom

5
그렇게하지 말아야합니다. SEGFAULT로 이어질 수 있습니다. 이건 위험 해.
Dave Halter

@DaveHalter SEGFAULT로 이어질 수 있다고 말했을 때 답변에서 제안 된 내용 또는 이전 의견에서 제안 된 내용을 언급하고 있습니까? 또한 SEGFAULT가 발생하는 이유 를 알고 있습니까?
Jack Kinsella

1
@JackKinsella Python 버전이 일치해야합니다. 그렇지 않으면 컴파일 된 모듈을 가져올 때 다른 버전을로드합니다. 그러나 아래 답변을 업데이트했습니다. 이제 Jedi에는이 모든 것이 쉽게 가능한 환경이 있습니다.
Dave Halter

4

당신은 할 수 없습니다. :python:python3명령은 항상 통역 컴파일에 사용합니다. 최신 버전의 Vim이 동적으로로드 python및 / 또는 python3로드 된 경우 (참조 :h python-dynamic) 다른 인터프리터를 사용 pythondll하고 pythonthreedll로드 할 수 있지만 Anaconda로 CPython을 대체하는 것은 segfaults를 요구하는 IMO입니다 (Vim이 그것을 받아 들일 경우, 즉).


3

2018+ 제다이 버전

: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를 수정할 수는 있지만 기본적으로 Jedi가 다른 Python 버전에서 이진 코드를 실행할 수 있기 때문에 SEGFAULT 및 기타 원치 않는 동작이 발생할 수 있습니다 (예 : 실제로 발생).


1

당신은 아나콘다와 정력 컴파일 할 수있다 : 내가 그랬어 ./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 풍미와 섞는 것에 대해 타당성을 가지고 있으며 PYTHONPATHAnaconda Python에 하드 코딩 이 .profile/ .bashrc실제로 SEG 11로 이어 지면 쉘 별칭을 사용할 수 있습니다.

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

아마도이 해결 방법으로 충분할 것입니다.


1

다른 확장 프로그램과의 호환성을 위해 32 비트 vim을 사용하고 있지만 다른 이유로 64 비트 파이썬이 PATH에 있습니다. 따라서 conda 를 통해 32 비트 파이썬을 설치했습니다 .

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.