Python 2のみの大きなコードがあります。最初にPython 3をチェックし、python3が使用されている場合は終了します。だから私は試しました:
import sys
if sys.version_info >= (3,0):
print("Sorry, requires Python 2.x, not Python 3.x")
sys.exit(1)
print "Here comes a lot of pure Python 2.x stuff ..."
### a lot of python2 code, not just print statements follows
ただし、終了は発生しません。出力は次のとおりです。
$ python3 testing.py
File "testing.py", line 8
print "Here comes a lot of pure Python 2.x stuff ..."
^
SyntaxError: invalid syntax
したがって、pythonは、何かを実行する前にwholeコードをチェックするように見えるため、エラーが発生します。
Python2コードが使用されているpython3をチェックし、そうであれば何かフレンドリーなものを印刷して終了する素敵な方法はありますか?
Pythonは、実行を開始する前にソースファイルをバイトコンパイルします。ファイル全体は少なくともparse正しくなければなりません。そうでなければ、SyntaxError
を取得します。
あなたの問題の最も簡単な解決策は、Python 2.xと3.xの両方として解析する小さなラッパーを書くことです。例:
import sys
if sys.version_info >= (3, 0):
sys.stdout.write("Sorry, requires Python 2.x, not Python 3.x\n")
sys.exit(1)
import the_real_thing
if __== "__main__":
the_real_thing.main()
ステートメントimport the_real_thing
はafterif
ステートメントのみ実行されるため、このモジュールのコードはPython 3.xコードとして解析する必要はありません。