How to gracefully deal with failed future feature (__future__) imports due to old interpreter version?

“I’d like to inform the user that they need to rerun the program with Python >= 2.6 and maybe provide some instructions on how to do so.”

Isn’t that what a README file is for?

Here’s your alternative. A “wrapper”: a little blob of Python that checks the environment before running your target aop.

File: appwrapper.py

import sys
major, minor, micro, releaselevel, serial = sys.version_info
if (major,minor) <= (2,5):
    # provide advice on getting version 2.6 or higher.
    sys.exit(2)
import app
app.main()

What “direct import” means. You can examine the contents of __future__. You’re still bound by the fact the a from __future__ import print_function is information to the compiler, but you can poke around before importing the module that does the real work.

import __future__, sys
if hasattr(__future__, 'print_function'): 
    # Could also check sys.version_info >= __future__. print_function.optional
    import app
    app.main()
else:
    print "instructions for upgrading"

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)