jedi-vim tarafından kullanılan python yorumlayıcı nasıl değiştirilir


10

Ben Anaconda, (python3.5.2 dahil) VIM(7.4) ve Jedi-VIMsistemimde yüklü. Ayrıca pythonvarsayılan olarak linux sistemine bir kurulum yapıldı.

Otomatik tamamlama en azından temel paketler üzerinde çalışıyor. Ancak numpy(dahil edilen Anaconda) paketler için tamamlama çalışmıyor.

Aşağıdaki komutu kullanarak 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_']

Bu bana Anaconda-pythontercüman ve paketlerin asla kullanılmadığını gösterir jedi-vim.

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

Jedi-vim'i paket otomatik tamamlama almak için anaconda python yolunu da nasıl kullanabilirim?

Yanıtlar:


8

Değişkeni aşağıdaki gibi kullanarak klasörümdeki jedi-vimpaketlerin konumunu sağlayarak kendim düzeltmeyi başardım :anaconda$PYTHONPATH

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

Herkese teşekkürler!

Veya ~ / .bash_profile dizinine aşağıdaki satırı ekleyin

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


Teşekkürler! Ekleme export PYTHONPATH="/home/user-name/anaconda3/lib/python3.5/site-packages":$PYTHONPATHbenim için ~/.zshrcKobrayla doğru çalışması lazım Jedi-vim.
joelostblom

5
Bunu yapmamalısın. Bu bir SEGFAULT'a yol açabilir. Tehlikeli.
Dave Halter

@DaveHalter Bir SEGFAULT'a yol açabileceğini söylediğinizde, yanıtta önerilenlerden veya önceki yorumda önerilenlerden bahsediyor musunuz? Ayrıca, neden bir SEGFAULT oluşabileceğini biliyor musunuz ?
Jack Kinsella

1
@JackKinsella Python sürümlerinin eşleşmesi gerekir, aksi takdirde derlenmiş modüller içe aktarıldığında farklı sürümler yüklersiniz. Ancak cevabımı aşağıda güncelledim. Artık Jedi'da bunların hepsini mümkün kılan ortamlar var.
Dave Halter

4

Yapamazsın. :pythonVe :python3komutlar hep tercüman derlenmiş içinde kullanın. Vim'in son bir sürümüne sahipseniz pythonve / veya python3dinamik olarak yüklüyseniz (bkz. :h python-dynamic) Farklı tercümanları kullanabilir pythondllve pythonthreedllyüklemek için kullanabilirsiniz , ancak CPython'u Anaconda ile değiştirmek, IMO'yu segfault istemektir (Vim'in kabul etmesi şartıyla).


3

2018+ Jedi Sürümleri

:let jedi#force_py_version=3.8Örneğin, en son Python sürümüne geçmek istiyorsanız kullanabilirsiniz . Ne yazık ki jedi-vim için henüz ortam listesi yok. Bunu yapmamız gerekiyor (yine de Jedi'da mevcut).


Eski Cevap

Temel olarak şu anda yapabileceğiniz tek şey VIM'i Python 3.5 desteği ile derlemektir. Bu muhtemelen aptalca bir fikir, ama işe yarıyor.

Aksi takdirde, https://github.com/davidhalter/jedi/issues/385 ile çapraz Python sürümleri için destek olacaktır .

Temel olarak Jedi'nin başka bir Python sürümünden ikili kod çalıştırmasına izin verdiğiniz için Python PATH'ı değiştirmenin mümkün olabileceğini, ancak bunun bir SEGFAULT'a ve diğer istenmeyen davranışlara yol açabileceğini unutmayın (Evet, aslında gerçekleşir).


1

Vim'i anaconda ile derleyebilirsiniz: Yaptım ./configure --with-features=huge --enable-pythoninterp --with-python-config-dir=~/anaconda/lib/python2.7/config/, daha sonra benzer testler yaptığımı ve :py import sys; print sys.pathbana doğru sonuçları verdiğimi hatırlıyorum .

Web aramasına dayanarak belki böyle bir şey yapabilirsiniz (ör. 3.4 için):

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


1

David, Vim'i farklı Python lezzetleriyle karıştırmak konusunda geçerli bir noktaya sahiptir ve eğer PYTHONPATHAnaconda Python'a sert kodlama .profile/ .bashrcgerçekten SEG 11'e yol açarsa , bir kabuk takma adı kullanabilir.

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

Belki de bu çözüm yeterli olacaktır.


1

Diğer uzantılarla uyumluluk için 32bit vim kullanıyorum, ancak 64 bit python başka nedenlerle benim PATH'imde ilk. Bu yüzden conda kullanarak 32 bit python yükledim :

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

ve bunu benim grubuma ekledi .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/anaconda2aramanın sonucu neredeconda info --base

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.