少なくとも特定のバージョンの Python を必要とする Python スクリプトを使用している場合、以前のバージョンの Python を使用してスクリプトを起動したときに正常に失敗する正しい方法は何ですか?
エラーメッセージを発行して終了するのに十分早い段階で制御を取得するにはどうすればよいですか?
たとえば、三項演算子 (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
(同僚のためのチャネリング。)