vim을 설치하고 구성했습니다 +python3/dyn
. 실행하면 vim --noplugin
사용할 수 있습니다 py3
. 그러나 플러그인을 활성화한 후 다음 오류가 발생합니다.
E837: This Vim cannot execute :py3 after using :python
E263: Sorry, this command is disabled, the Python library could not be loaded.
플러그인 중 하나가 python2를 로드하여 사용 중인 Python 버전을 정의하는 것으로 의심됩니다(이 vim-bootstrap 질문과 유사합니다.). 문제는 어느 쪽인지 모른다는 것입니다.
내 vim 버전에서 python3을 어떻게 사용할 수 있나요?
플러그인이 설치됨
Vundle에는 다음 플러그인이 설치됩니다.
60 " let Vundle manage Vundle, required
61 Plugin 'gmarik/Vundle.vim'
62 "Bundle 'Valloric/YouCompleteMe'
63 Plugin 'tmhedberg/SimpylFold'
64 Plugin 'vim-scripts/indentpython.vim'
65 Plugin 'scrooloose/syntastic'
66 Plugin 'scrooloose/nerdtree'
67 Plugin 'jistr/vim-nerdtree-tabs'
68 Plugin 'kien/ctrlp.vim'
69 Plugin 'tpope/vim-fugitive'
70 Plugin 'nvie/vim-flake8'
71 "Plugin 'Lokaltog/powerline', {'rtp': 'powerline/bindings/vim/'}
72 Plugin 'vim-airline/vim-airline'
73 Plugin 'vim-airline/vim-airline-themes'
74 Bundle 'klen/python-mode'
75 Plugin 'jmcantrell/vim-virtualenv'
Python3을 기본/선호 버전으로 만들어 보세요.
나는 다음을 실행하여 python3을 선호하는 대안으로 만들려고 했습니다.
alternatives --install /usr/bin/python python /usr/bin/python3.5 2
alternatives --install /usr/bin/python python /usr/bin/python2.7 1
vim(또는 플러그인 중 하나)은 여전히 python2.7을 사용하고 있으며 위와 같은 오류가 발생합니다.
내 vim 버전
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jun 2 2016 10:02:17)
Included patches: 1-1868
Modified by <[email protected]>
Compiled by <[email protected]>
Huge version without GUI.
답변1
문제는 has('python')
vim이 python/dyn 및 python3/dyn으로 컴파일될 때 if 문을 실행하면 python3을 사용할 수 없게 된다는 것입니다. 가장 간단한 해결책은 다음과 같은 것을 추가하는 것입니다.
if exists('py2') && has('python')
elseif has('python3')
endif
Vundle이 무엇이든 로드하기 전에 이를 .vimrc에 추가하세요. 그런 다음 Python 2를 사용해야 하는 경우 vim --cmd 'let py2 = 1'
.
has('python')
또는 귀하의 플러그인을 살펴보고 이전 플러그인 3개를 찾았습니다 has('python3')
.
YouCompleteMe: 당신이 이 질문에 대해 댓글을 달았다는 것을 알고 있습니다. 하지만 이것이 제가 이 질문을 우연히 발견한 방식이므로 다른 사람들도 여기로 이어질 수 있습니다. YouCompleteMe/plugin/youcompleteme.vim의 36번째 줄에서 먼저 python3: 을 확인하세요
elseif !has( 'python3' ) && !has( 'python' )
.python-mode: python-mode/plugin/pymode.vim을 보면 275행 주위에 "has" if 문이 있습니다. 실제로 전역 변수를 설정하여
g:_uspy
특정 버전을 강제로 적용 할 수 있다는 것을 알 수 있습니다. 사용된. 따라서g:_uspy = ':py3'
Vundle 콘텐츠 앞에 .vimrc를 배치하거나 pymode.vim에서 if 문을 편집하세요.vim-virtualenv: YCM과 동일합니다. vim-virtualenv/plugin/virtualenv.vim의 10번째 줄에 있는 if 문의 조건을 반대로 바꿉니다.
물론 이렇게 하면 로드되는 첫 번째 항목만 수정하면 됩니다.
답변2
Python 3이 설치되어 있다고 가정하면 ...
:python
사용하거나 :python3
대신 실행:py3
Vim에서 이 코드를 사용해 보세요. Python 3에서 실행됩니다.
:python3 print("Hello world")
자세한 내용은:
:help python3