Задать вопрос
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?
  • Вопрос задан
  • 2478 просмотров
Подписаться 6 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Профессия Python-разработчик + ИИ
    10 месяцев
    Далее
Решения вопроса 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 одновременно, в некоторых ситуация может выдавать весьма занятный вывод линтинга.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽