0

特にPython 3のモジュールがあります。誰かがそれをPython 2にインポートしようとした場合に、何らかの例外が発生/発生することを保証する最良の方法は何ですか?

今私は持っています:

# all my imports that I need, ex:
import sys

# blow up if not python 3
if sys.version_info.major < 3:
    sys.exit("This is not Python 3")

しかし、私は余分なインポートが本当に好きではありません (私のモジュールが sys を必要としない場合は、バージョン チェックのためにインポートする必要があります)。より良い/より偶像的な方法はありますか?

4

4 に答える 4

2

sys.exit しないでください。他の開発者があなたの顔を刺したくなるからです。

ImportError作成したPy3kCompatibleエラーをスローするだけです。

于 2012-05-15T16:04:45.463 に答える
0

ImportErrorがその役割を果たしますが、外部ライブラリを使用している場合、これは問題になります。

于 2012-05-15T16:06:48.570 に答える
0

私が考えることができる唯一のことは、変更された言語機能を具体的にテストすることです。

try:
    lambda: print()
except SyntaxError:
    raise ImportError('This code requires Python 3')

( を再学習する手間がかかるためprint、新しい関数構文でラムダ内で使用できるのが本当に気に入っています)

このコードは実際に python3 で print を呼び出すわけではないことに注意してください。呼び出した場合に print を呼び出す関数を返すだけですが、呼び出される代わりに破棄されるだけなので、実行しても STDOUT でずさんな改行が発生することはありません。このテスト。

于 2012-07-21T17:05:37.970 に答える