2011-02-08 2 views
1

파이썬은 버전 3을 기본값으로 사용하기 때문에 버전 2 코드 실행을 corret 파이썬 인터프리터로 처리해야합니다. 파이썬 패키지를 구성하고 설치하기 위해 작은 파이썬 프로젝트를 사용하고 있습니다. 여기 내 질문이 있습니다. 어떻게 파이썬의 버전을 Makefile 안에 넣을 수 있습니까?Makefile에서 파이썬 버전을 판별하는 방법은 무엇입니까?

여기에 내가 사용하고자하는 논리는 다음과 같습니다 경우 (python.version의 == 3) python2 some_script.py2 다른 python3 some_script.py3 사전에

감사합니다!

답변

3
python_version_full := $(wordlist 2,4,$(subst ., ,$(shell python --version 2>&1))) 
python_version_major := $(word 1,${python_version_full}) 
python_version_minor := $(word 2,${python_version_full}) 
python_version_patch := $(word 3,${python_version_full}) 

my_cmd.python.2 := python2 some_script.py2 
my_cmd.python.3 := python3 some_script.py3 
my_cmd := ${my_cmd.python.${python_version_major}} 

all : 
    @echo ${python_version_full} 
    @echo ${python_version_major} 
    @echo ${python_version_minor} 
    @echo ${python_version_patch} 
    @echo ${my_cmd} 

.PHONY : all 
+0

그게 전부 야! 고맙습니다! – Rizo

+0

2.5 이전의 버전을 지원하기 위해 대신'python -V'를 사용했습니다. – fnokke

0

이것은 도움이 될 수 있습니다 : here's a thread SF에서 Python 버전을 검사하여 새로운 언어 기능을 제어하는 ​​방법.

+0

좋은 함께 사용할 수 있지만, 실제로이 경우 메이크 ... – Rizo

+0

내부를 처리 할 필요가 이쪽을 봐 : HTTP ://old.nabble.com/Detecting-which-Python-version-is-used-by-SIP-and-PyQt-td30033430.html –

3

다음은 더 짧은 해결책입니다. 당신의 메이크 쓰기의 상단에 :

PYV=$(shell python -c "import sys;t='{v[0]}.{v[1]}'.format(v=list(sys.version_info[:2]));sys.stdout.write(t)"); 

는 그런 다음 $(PYV)

관련 문제