หากฉันมีสคริปต์ Python ที่ต้องการ Python อย่างน้อยหนึ่งรุ่นวิธีที่ถูกต้องในการทำให้ล้มเหลวคืออะไรเมื่อใช้ Python เวอร์ชันก่อนหน้าเพื่อเริ่มต้นสคริปต์
ฉันจะควบคุมได้เร็วพอที่จะออกข้อความแสดงข้อผิดพลาดและออกได้อย่างไร
ตัวอย่างเช่นฉันมีโปรแกรมที่ใช้ตัวดำเนินการ ternery (ใหม่ใน 2.5) และ "with" blocks (ใหม่ใน 2.6) ฉันเขียนรูทีนตัวตรวจสอบรุ่นล่ามเล็ก ๆ ง่ายๆซึ่งเป็นสิ่งแรกที่สคริปต์จะเรียก ... ยกเว้นว่ามันจะไปได้ไกลขนาดนั้น แต่สคริปต์ล้มเหลวในระหว่างการรวบรวมหลามก่อนที่ฉันจะเรียกรูทีน ดังนั้นผู้ใช้งานของสคริปต์จึงเห็นข้อผิดพลาดในการติดตามข้อผิดพลาดของ 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
(Channeling สำหรับผู้ร่วมงาน)