On Fri, 7 Jul 2017 04:30 pm, Ben S. wrote: > Can I somehow check from inside a Python script if the executing Python engine > is major version v2 or v3?
Yes you can, but generally speaking you shouldn't. import sys if sys.version_info >= (3,): # the comma is important print("version 3") else: print("version 2") But keep in mind that your code must be syntactically valid for the running version regardless of the result of the test. This will **NOT** work: import sys if sys.version_info >= (3,): # the comma is important print("version 3") else: print "version 2" # Python 2 syntax Earlier I said that in general you shouldn't test for the version. Normally you should test for a specific feature, not for the version number. For example, suppose I want to use the "reduce()" function. In Python 2 it is a built-in function, but in Python 3 it is moved into the functools module. Don't do this: if sys.version_info >= (3,): from functools import reduce This is better: try: reduce except NameError: # reduce no longer defined as a built-in from functools import reduce That's now not only backwards compatible, but it is forward compatible: if Python changes in the future to bring reduce back into the built-in functions, your code will automatically keep working. Dealing with syntax changes in hybrid version 2 + 3 code is quite tricky. It can be done, but it is painful, even for experts. > Additional question: > Is there a way to execute a python script with v3 python engine in v2 > compatibility mode? I am thinking about a command parameter like (python.exe > is v3.*): > > python.exe -execute_as_v2 myscript.py No. Python 3 is always Python 3, and Python 2 is always Python 2. But what you can do is install both, and then call python2.exe myscript.py python3.exe anotherscript.py -- Steve “Cheer up,” they said, “things could be worse.” So I cheered up, and sure enough, things got worse. -- https://mail.python.org/mailman/listinfo/python-list