How can I check for Python version in a program that uses new language features?
You can test using
try: eval("1 if True else 2")except SyntaxError: # doesn't have ternary
with is available in Python 2.5, just add
from __future__ import with_statement.
EDIT: to get control early enough, you could split it into different
.py files and check compatibility in the main file before importing (e.g. in
__init__.py in a package):
# __init__.py# Check compatibilitytry: eval("1 if True else 2")except SyntaxError: raise ImportError("requires ternary support")# import from another modulefrom impl import *
Have a wrapper around your program that does the following.
import sysreq_version = (2,5)cur_version = sys.version_infoif cur_version >= req_version: import myApp myApp.run()else: print "Your Python interpreter is too old. Please consider upgrading."
You can also consider using
sys.version(), if you plan to encounter people who are using pre-2.0 Python interpreters, but then you have some regular expressions to do.
And there might be more elegant ways to do this.