Not sure this is really an answer, or I should elaborate on my comment, and in hindsight probably not even a very good comment anyway, but:
Firstly, you can just simplify it to:
from itertools import izip as zip
except ImportError: # will be 3.x series
What I was thinking about was:
From 2.6 you can use as per the docs:
from future_builtins import map # or zip or filter
You do however then have the same problem of
ImportError - so:
from future_builtins import zip
except ImportError: # not 2.6+ or is 3.x
from itertools import izip as zip # < 2.5 or 3.x
The advantage of using
future_builtin is that it's in effect a bit more "explicit" as to intended behaviour of the module, supported by the language syntax, and possibly recognised by tools.
For instance, I'm not 100% sure, but believe that the 2to3 tool will re-write
zip correctly as
list(zip(... in this case, while a plain
zip = izip may not be... But that's something that needs looking in to.
Updated - also in the docs:
The 2to3 tool that ports Python 2 code to Python 3 will recognize this usage and leave the new builtins alone.