How Should I Set Default Python Version In Windows?
Batch FileWindows 7Environment VariablesPython 2.6Python 3.1Batch File Problem Overview
I installed Python 2.6
and Python 3.1
on Windows 7 and set environment variable: path = d:\python2.6
.
When I run python
in cmd
, it displays the python version 2.6, which is what I want!
But, when I wrote a script in a bat file and ran it, the displayed python version was 3.1.
import sys
print (sys.version)
What's going on here?
Batch File Solutions
Solution 1 - Batch File
This is if you have both the versions installed.
Go to This PC → Right-click → Click on Properties → Advanced System Settings.
You will see the System Properties. From here navigate to the Advanced Tab -> Click on Environment Variables.
You will see a top half for the user variables and the bottom half for System variables.
Check the System Variables and double-click on the Path (to edit the Path).
Check for the path of Python(which you wish to run i.e. Python 2.x or 3.x) and move it to the top of the Path list.
Restart the Command Prompt, and now when you check the version of Python, it should correctly display the required version.
Solution 2 - Batch File
The Python installer installs Python Launcher for Windows. This program (py.exe
) is associated with the Python file extensions and looks for a "shebang" comment to specify the python version to run. This allows many versions of Python to co-exist and allows Python scripts to explicitly specify which version to use, if desired. If it is not specified, the default is to use the latest Python version for the current architecture (x86 or x64). This default can be customized through a py.ini
file or PY_PYTHON
environment variable. See the docs for more details.
Newer versions of Python update the launcher. The latest version has a py -0
option to list the installed Pythons and indicate the current default.
Here's how to check if the launcher is registered correctly from the console:
C:\>assoc .py
.py=Python.File
C:\>ftype Python.File
Python.File="C:\Windows\py.exe" "%1" %*
Above, .py
files are associated with the Python.File
type. The command line for Python.File
is the Python Launcher, which is installed in the Windows directory since it is always in the PATH.
For the association to work, run scripts from the command line with script.py
, not "python script.py", otherwise python
will be run instead of py
. If fact it's best to remove Python directories from the PATH, so "python" won't run anything and enforce using py
.
py.exe
can also be run with switches to force a Python version:
py -3 script.py # select latest Python 3.X version to be used.
py -3.6 script.py # select version 3.6 specifically.
py -3.9-32 script.py # select version 3.9 32-bit specifically.
py -0 # list installed Python versions (latest PyLauncher).
Additionally, add .py;.pyw;.pyc;.pyo
to the PATHEXT
environment variable and then the command line can just be script
with no extension.
Solution 3 - Batch File
Running 'py' command will tell you what version you have running. If you currently running 3.x and you need to switch to 2.x, you will need to use switch '-2'
py -2
If you need to switch from python 2.x to python 3.x you will have to use '-3' switch
py -3
If you would like to have Python 3.x as a default version, then you will need to create environment variable 'PY_PYTHON' and set it's value to 3.
Solution 4 - Batch File
If you know about Environment variables
and the system variable called path
, consider that any version of any binary which comes sooner, will be used as default.
Look at the image below, I have 3 different python versions but python 3.8
will be used as default since it came sooner than the other two. (In case of mentioned image, sooner means higher!)
Solution 5 - Batch File
If you are a Windows user and you have a version of Python 3.3 or greater, you should have the Python Launcher for Windows installed on your machine, which is the recommended way to use for launching all python scripts (regardless of python version the script requires).
As a user
-
Always type
py
instead ofpython
when running a script from the command line. -
Setup your "Open with..." explorer default program association with
C:\Windows\py.exe
-
Set the command line file extension association to use the Python Launcher for Windows (this will make typing
py
optional):ftype Python.File="C:\windows\py.exe" "%L" %*
ftype Python.NoConFile="C:\Windows\pyw.exe" "%L" %*
-
Set your preferred default version by setting the
PY_PYTHON
environment variable (e.g.PY_PYTHON=3.7)
. You can see what version of python is your default by typingpy
. You can also setPY_PYTHON3
orPY_PYTHON2
to specify default python 3 and python 2 versions (if you have multiple). -
If you need to run a specific version of python, you can use
py -M.m
(whereM
is the major version andm
is the minor version). For example,py -3
will run any installed version of python 3. -
List the installed versions of python with
py -0
.
As a script writer
-
Include a shebang line at the top of your script that indicates the major version number of python required. If the script is not compatible with any other minor version, include the minor version number as well. For example:
#!/usr/bin/env python3
-
You can use the shebang line to indicate a virtual environment as well (see PEP 486 below).
See also
Solution 6 - Batch File
;
; This is an example of how a Python Launcher .ini file is structured.
; If you want to use it, copy it to py.ini and make your changes there,
; after removing this header comment.
; This file will be removed on launcher uninstallation and overwritten
; when the launcher is installed or upgraded, so don't edit this file
; as your changes will be lost.
;
[defaults]
; Uncomment out the following line to have Python 3 be the default.
;python=3
[commands]
; Put in any customised commands you want here, in the format
; that's shown in the example line. You only need quotes around the
; executable if the path has spaces in it.
;
; You can then use e.g. #!myprog as your shebang line in scripts, and
; the launcher would invoke e.g.
;
; "c:\Program Files\MyCustom.exe" -a -b -c myscript.py
;
;myprog="c:\Program Files\MyCustom.exe" -a -b -c
Thus, on my system I made a py.ini
file under c:\windows\
where py.exe exists, with the following contents:
[defaults]
python=3
Now when you Double-click on a .py file, it will be run by the new default version. Now I'm only using the Shebang #! python2
on my old scripts.
Solution 7 - Batch File
- Edit registry key
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\python.exe\default
- Set default program to open
.py
files topython.exe
Solution 8 - Batch File
This work for me.
If you want to use the python 3.6 you must move the python3.6 on the top of the list.
The same applies to the python2.7 If you want to have the 2.7 as default then make sure you move the python2.7 on the very top on the list.
> step 1
> step 2
> step 3
then close any cmd command prompt and opened again, it should work as expected.
> python --version
>>> Python 3.6
Solution 9 - Batch File
This worked for me:
Go to
Control Panel\System and Security\System
select
Advanced system settings from the left panel
from Advanced tab click on Environment Variables
In the System variables section search for (create if doesn't exist)
PYTHONPATH
and set
C:\Python27\;C:\Python27\Scripts;
or your desired version
You need to restart CMD.
In case it still doesn't work you might want to leave in the PATH variable only your desired version.
Solution 10 - Batch File
If you are on Windows, use the ASSOC command to change the default python version for python programs.
assoc .py=<Python 3.1 directory>
Solution 11 - Batch File
Now that Python 3.3 is released it is easiest to use the py.exe utility described here: http://www.python.org/dev/peps/pep-0397/
It allows you to specify a Python version in your script file using a UNIX style directive. There are also command line and environment variable options for controlling which version of Python is run.
The easiest way to get this utility is to install Python 3.3 or later.
Solution 12 - Batch File
Nothing above worked, this is what worked for me:
ftype Python.File=C:\Path\to\python.exe "%1" %*
This command should be run in Command prompt launched as administrator
Warning: even if the path in this command is set to python35, if you have python36 installed it's going to set the default to python36. To prevent this, you can temporarily change the folder name from Python36
to xxPython36
, run the command and then remove the change to the Python 36 folder.
Solution 13 - Batch File
Check which one the system is currently using:
python --version
Add the main folder location (e.g. C/ProgramFiles) and Scripts location (C/ProgramFiles/Scripts) to Environment Variables of the system. Add both 3.x version and 2.x version
Path location is ranked inside environment variable. If you want to use Python 2.x simply put path of python 2.x first, if you want for Python 3.x simply put 3.x first
Solution 14 - Batch File
Use SET
command in Windows CMD to temporarily set the default python for the current session.
SET PATH=C:\Program Files\Python 3.5
Solution 15 - Batch File
Try modifying the path in the windows registry (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment).
Caveat: Don't break the registry :)