Jika saya memiliki skrip Python yang membutuhkan setidaknya versi Python tertentu, apa cara yang benar untuk gagal dengan anggun ketika versi Python sebelumnya digunakan untuk meluncurkan skrip?
Bagaimana cara mendapatkan kontrol cukup awal untuk mengeluarkan pesan kesalahan dan keluar?
Sebagai contoh, saya memiliki program yang menggunakan operator ternery (baru dalam 2,5) dan "dengan" blok (baru dalam 2,6). Saya menulis rutin kecil pemeriksa versi interpreter yang merupakan hal pertama yang akan dipanggil skrip ... kecuali itu tidak sampai sejauh itu. Sebagai gantinya, skrip gagal selama kompilasi python, bahkan sebelum rutinitas saya dipanggil. Dengan demikian pengguna skrip melihat beberapa tracebacks kesalahan synax sangat jelas - yang cukup banyak membutuhkan ahli untuk menyimpulkan bahwa itu hanya kasus menjalankan versi yang salah dari Python.
Saya tahu cara memeriksa versi Python. Masalahnya adalah bahwa beberapa sintaks ilegal di versi Python yang lebih lama. Pertimbangkan program ini:
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
Ketika dijalankan di bawah 2.4, saya ingin hasil ini
$ ~/bin/python2.4 tern.py
must use python 2.5 or greater
dan bukan hasil ini:
$ ~/bin/python2.4 tern.py
File "tern.py", line 5
x = 1 if True else 2
^
SyntaxError: invalid syntax
(Menyalurkan untuk rekan kerja.)