2011-05-03 7 views
23

저는 여러 버전의 Python에서 실행되는 여러 Python 프로젝트를 작업 중입니다. 필자는 vim 환경에서 ropevim, pyflakes 및 pylint를 사용하기를 희망하지만 단일 vim (프로젝트의 Python 버전과 일치하지 않는 특정 버전의 Python 용으로 컴파일 됨)을 사용하여 발생하는 문제에 직면했습니다. .특정 버전의 Python으로 vim 컴파일하기

내 virtualenv 디렉토리마다 정력을 구축하기를 바라고 있지만 문제가 발생하여 제대로 작동하지 않습니다. 내 virtualenv에서 파이썬 구성 폴더를 지정 했음에도 불구하고 소스에서 vim을 빌드하려고하면 시스템 전체 파이썬 인터프리터가 항상 사용됩니다.

현재 Python 2.6.2와 Python 2.7.1이 각 버전에서 생성 된 여러 개의 virtualenv와 함께 설치되었습니다. 시스템 기본 파이썬이 2.6.5 인 우분투 10.04를 사용하고 있습니다. vim을 컴파일하고 :python import sys; print(sys.version)으로 호출 할 때마다 Python 2.6.5을 반환합니다. config.log에서 다음

configure --prefix=/virtualenv/project --enable-pythoninterp=yes --with-python-config-dir=/virtualenv/project/lib/python2.6/config

결과 :

... 
configure:5151: checking --enable-pythoninterp argument 
configure:5160: result: yes 
configure:5165: checking for python 
configure:5195: result: /usr/bin/python 
... 

/virtualenv/project/bin/python해야한다. vim에서 사용할 파이썬 인터프리터를 지정하는 방법이 있습니까?

참고 :/virtualenv/project/bin이 PATH 환경 변수 앞에 표시되는지 확인할 수 있습니다.

답변

13

나는 2 개의 인터프리터에 대해 vim을 빌드 한 다음 아래에 제공된 셸 스크립트를 사용하여 특정 virtualenv를 가리 키도록 권장합니다.

나는 다음 명령 (2.7 $ HOME/루트 아래에 설치되어있는)를 사용하여 파이썬 2.7에 대한 정력을 구축 할 수 있었다 :

% LD_LIBRARY_PATH=$HOME/root/lib PATH=$HOME/root/bin:$PATH \ 
    ./configure --enable-pythoninterp \ 
    --with-python-config-dir=$HOME/root/lib/python2.7/config \ 
    --prefix=$HOME/vim27 
% make install 
% $HOME/bin/vim27 

:python import sys; print sys.path[:2] 
['/home/pat/root/lib/python27.zip', '/home/pat/root/lib/python2.7'] 

귀하의 VIRTUALENV 실제로 파이썬 인터프리터 주위에 얇은 래퍼입니다 그것을 ~ $HOME/foobar/lib/python2.6/config/usr/lib/python2.6/config에 대한 심볼릭 링크입니다.

% PATH=$HOME/foobar/bin:$PATH ./configure --enable-pythoninterp \ 
    --with-python-config-dir=$HOME/foobar/lib/python2.6/config \ 
    --prefix=$HOME/foobar 
.. 
checking for python... /home/pat/foobar/bin/python 
checking Python's configuration directory... (cached) /home/pat/foobar/lib/python2.6/config 
.. 

% make install 
% $HOME/foobar/bin/vim 
:python import sys; print sys.path[:1] 
['/usr/lib/python2.6'] 

: 시스템 인터프리터로 만든 경우

그래서 구성이 VIRTUALENV의 경로가 표시됩니다에도 불구하고, VIM은이 목록을 조사하고 기본적으로 시스템 sys.path을 사용하여 실제 인터프리터에 대한 링크 궁극적으로 해결 방법 : 시스템 vim이 시스템 파이썬에 대해 컴파일 될 가능성이 높기 때문에 각 virtualenv에 대해 vim을 다시 작성할 필요가 없습니다.이라는 쉘 스크립트를 virtualenv의 bin 디렉토리에 드롭하면 이전의 PYTHONPATH를 확장 할 수 있습니다 호출 시스템 vim :

~/HOME/foobar/bin/vim

내용 :이 호출하면

#!/bin/sh 
ROOT=`cd \`dirname $0\`; cd ..; pwd` 
PYTHONPATH=$ROOT/lib/python2.6/site-packages /usr/bin/vim $* 

가의 VIRTUALENV의 sys.path에 삽입 :

% $HOME/foobar/bin/vim 
:python import sys; print sys.path[:2] 
['/home/pat/foobar/lib/python2.6/site-packages', '/usr/lib/python2.6'] 
+0

나는 여러 가지 버전의 Python을 사용한다고 언급했는데, 원래 질문에서 좀 더 자세히 설명해야 할 것이다. 시스템 파이썬은 내가 virtualenvs를 만든 파이썬이 아닙니다. 사실, 나는 파이썬 2.6.2와 파이썬 2.7.1을 사용하는 virtualenv를 가지고 있지만, vim을 컴파일 할 때마다 파이썬 인터프리터는/usr/bin/python (Ubuntu 10.04에서 파이썬 2.6.5)이 사용된다. – brildum

+0

다른 파이썬 버전은 어디에 설치되어 있는가? , 예. 심볼릭 링크'/ virtualenv/project/lib/python2.6/config'는 어디에 있습니까? – samplebias

+0

configure를 호출 할 때 virtualenv를 활성화 시켰지만 (''echo $ PATH''는''PATH =/virtualenv/project ''를 추가했을 때''/ virtualenv/project : ...''를 출력 할 것입니다. : $ PATH ... "명령을 시작하자마자 제대로 작동 할 수있었습니다. 도와 주셔서 감사합니다. – brildum

1

내 시스템에 파이썬의 3 개 가지 버전이 같은 문제가 발생했다.

내게 가장 쉬운 방법은 내 $PATH env 변수를 변경하여 원하는 파이썬 버전이있는 폴더 (내 경우에는 /usr/local/bin)가 다른 것으로 발견되도록하는 것입니다. 그것은 가치, 아무도 여기이 대답 한 것 같다 무엇을 위해

+0

$ PATH 만 설정해도 작동하지 않았습니다. , 내 대답에 나열된 vi_cv_path_python 호출을 사용하여 명시 적으로 구성해야했다. – crowder

9

, 나는 다음과 같은 명령 줄을 사용하여 약간의 행운이 있었다 :

vi_cv_path_python =는/usr/빈/python26 ./configure를 --includedir = /usr/include/python2.6/ --prefix =/home/bcrowder/local --with-features = 거대한 - 허용 - rubyinterp - 가능 -pythoninterp --disable-selinux --with-python-config-dir =/usr/lib64/python2.6/config

+1

이 컴퓨터는 저에게 도움이되었습니다. 내 $ HOME 접두사에 파이썬 2.7이 접두어로 붙어 있으며 vim 빌드가 찾지 못하는 것 같았습니다. – JeffG

+0

어디에 있습니까? –

+0

@AndyHayden : 명령 줄에서 소스에서 vim을 빌드 하시겠습니까? – crowder

4

비슷한 솔루션을 제공하고 싶습니다.

당신은 파이썬은 /opt/Python-2.7.5에 설치 한 상상하고 해당 폴더의 구조는

$ tree -d -L 1 /opt/Python-2.7.5/ 
/opt/Python-2.7.5/ 
├── bin 
├── include 
├── lib 
└── share 

것을 당신은 파이썬의 버전과 정력을 구축하고 싶습니다. 당신이해야 할 모든 단지 명시 적으로 자신의 (심지어 설정 - 디렉토리)에 모든 것을 추론 할 스크립트를 configure하는 vi_cv_path_python 변수를 제공하여, 따라서

$ vi_cv_path_python=/opt/Python-2.7.5/bin/python ./configure --enable-pythoninterp --prefix=/SOME/FOLDER 

입니다.

이것은 vim 7.4 이상에서 최근에 vim-7-4-324으로 여러 번 테스트되었습니다. 나의 vim80 컴파일시

+0

감사합니다. 귀하의 반응은 파이썬의 사용자 정의/독점적 설치를 사용하여 vim을 컴파일하는 데 도움이되었습니다. –

0

, 시스템 파이썬은 내가 ~/지역/bin에 또 다른 파이썬 2.7이 2.6이고, 나는 컴파일 작업 할 것을 발견 : 배치

  1. 업데이트 $ 경로 내 파이썬 경로는 앞서
  2. 는 소프트 링크를 추가 에선 -s 파이썬 python2 다시 연구하기 전에
  3. 은으로 distclean 수 있도록 (구성 파일 python2을 프로빙하여 파이썬 설정을 찾으려고 것) 캐시되지 않은 잘못된 값이 선택되지 않았는지 확인하십시오.
관련 문제