Check Python version from inside script? Run Pythons script in v2 compatibility mode?

eryk sun eryksun at gmail.com
Fri Jul 7 14:57:26 EDT 2017


On Fri, Jul 7, 2017 at 7:53 AM, Steve D'Aprano
<steve+python at pearwood.info> wrote:
> On Fri, 7 Jul 2017 04:30 pm, Ben S. wrote:
>
>> 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

Windows Python installs two loaders for each version of Python:
python.exe and pythonw.exe. No links or copies are created for
pythonX[w].exe, pythonX.Y[w].exe, or pythonX.Y-32[w].exe. Instead,
there are separate py.exe and pyw.exe launchers that use the registry
to find and execute a loader for a given version, e.g.

    py -2 myscript.py
    py -3.6-32 anotherscript.py

As of 3.6, the py launcher defaults to the highest version of Python 3
that's installed. 64-bit Python is preferred on 64-bit Windows. The
default version can be overridden by setting the PY_PYTHON environment
variable.

That said, you don't have to manually run a script as an argument of
py.exe or python.exe. For a default Python 3 installation, if the
PATHEXT environment variable contains ".PY", then you can run
"script.py" as

    script arg1 ... argN

in CMD or PowerShell. If a script has a Unix shebang, the launcher
will read it to run the required version of Python, if that version is
installed.



More information about the Python-list mailing list