2011-02-08 10 views
1

バージョン3をデフォルトとして使用するようにpythonが渡されたので、バージョン2のコードの実行を、修正されたPythonインタプリタで処理する必要があります。私は小さなpython2プロジェクトを使用して、makeを設定してPythonパッケージをインストールするので、ここに私の質問があります:Makefileの内部でPythonのバージョンを調べるにはどうすればいいですか?Makefileでpythonのバージョンを調べる方法は?

ここで私が使用したいロジックです: 場合(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

良いとそれを使用することができますが、私は実際にその場合のMakefile ... – 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)