xarek1986
@xarek1986
Инженер

Как заставить связку vim+python-mode+{jedi-vim} работать с Python3?

Салют Господа!

Имеем:
1. OS Gentoo Linux 3.18.11-gentoo x86_64
2. app-editors/vim
USE="X acl gpm nls python"
PYTHON_SINGLE_TARGET="python2_7"
PYTHON_TARGETS="python2_7 python3_3"

3. app-vim/python-mode
4. vimrc:
set nocompatible              " be iMproved, required
filetype off                  " required
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/vundle.vim
call vundle#begin()
Plugin 'gmarik/vundle.vim'

Plugin 'tomasr/molokai'
Plugin 'scrooloose/nerdtree'
Plugin 'AutoClose'
Plugin 'bling/vim-airline'

Plugin 'davidhalter/jedi-vim'
call vundle#end()            " required
filetype plugin indent on

set t_Co=256
set cursorline
set nocompatible
set wrap
set linebreak
set showcmd
set ruler
set confirm
set smartindent
set autoindent
set tabstop=4
set shiftwidth=4
"set list
set cursorline
set wildmenu
set wcm=<TAB>
colorscheme molokai
set guifont=Dejavu\ Sans\ Mono\ Book\ 10

set laststatus=2

"----------------- Py-Mode -----------------------------"
let g:pymode_python = 'python3'
let g:pymode_rope = 0
let g:pymode_rope_completion = 0
let g:pymode_rope_complete_on_dot = 0

"----------------- Jedi ----------------------------------"
let g:jedi#force_py_version = 3

Проблема:
Ни python-mode, ни jedi не автодополняют python3, т.е. предлагает print "somth" вместо print("somth"), и при импорте выдает только модули установленые в Py2.
Так же набросаный в виме
import sys
for i in sys.path: print(i)

выдает
/usr/share/vim/vimfiles/pylibs
/usr/lib64/python27.zip
/usr/lib64/python2.7
/usr/lib64/python2.7/plat-linux2
/usr/lib64/python2.7/lib-tk
/usr/lib64/python2.7/lib-old
/usr/lib64/python2.7/lib-dynload
/usr/lib64/python2.7/site-packages

Господа, кто-нибудь знает как заставить эту связку работать только с Py3?
  • Вопрос задан
  • 2151 просмотр
Решения вопроса 1
gmist
@gmist
Во-первых, необходимо определиться, какой из этих двух плагинов выводит данный автокомплит, т.к. jedi-vim во многих случаях конфликтует с python-mode, о чем и сказано в документации. Иногда это проявляется в диких тормозах автокомплита, а иногда и в самом автокомлите.

Во-вторых, для корректной работы jedi-vim с Python 3, необходим Vim с +python3, т.к. в своей работе он использует "py3file" и "python3" команды. Убедиться в поддержке python3 можно через vim --version, либо вызвав :python3 в самом редакторе.

В-третьих, для комфортной работы лучше всего запускать Vim из соответствующего виртуального окружения с необходимой версией Python интерпретатора, т.к. та же pylama (либо как внешний плагин, либо из комплекта python-mode), в случае если Vim собран с +python и +python3 одновременно, в некоторых ситуация может выдавать весьма занятный вывод линтинга.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 100 000 до 150 000 руб.
Alytics Москва
от 120 000 до 130 000 руб.
FirstVDS Иркутск
от 50 000 до 80 000 руб.
14 нояб. 2019, в 08:31
1500 руб./за проект
14 нояб. 2019, в 08:04
2000 руб./за проект
14 нояб. 2019, в 06:34
5000 руб./за проект