特定のバージョンのPythonを必要とするPythonスクリプトがある場合、以前のバージョンのPythonを使用してスクリプトを起動したときに正常に失敗する正しい方法は何ですか?
エラーメッセージを発行して終了するのに十分早い段階で制御を取得するにはどうすればよいですか?
たとえば、3項演算子(2.5の新機能)と「with」ブロック(2.6の新機能)を使用するプログラムがあります。私は、スクリプトが最初に呼び出す簡単なインタープリターバージョンチェッカールーチンを記述しましたが、それほど遠くはありません。代わりに、私のルーチンが呼び出される前に、Pythonコンパイル中にスクリプトが失敗します。したがって、スクリプトのユーザーには、非常にあいまいなsynaxエラートレースバックが表示されます。これは、Pythonの誤ったバージョンを実行している場合にのみ当てはまると専門家が推測する必要があります。
Pythonのバージョンを確認する方法を知っています。問題は、古いバージョンのPythonでは一部の構文が不正であることです。このプログラムを考えてみましょう:
import sys
if sys.version_info < (2, 4):
raise "must use python 2.5 or greater"
else:
# syntax error in 2.4, ok in 2.5
x = 1 if True else 2
print x
2.4で実行すると、この結果が欲しい
$ ~/bin/python2.4 tern.py
must use python 2.5 or greater
この結果ではありません:
$ ~/bin/python2.4 tern.py
File "tern.py", line 5
x = 1 if True else 2
^
SyntaxError: invalid syntax
(同僚のチャネリング。)