Install Python 3
Python 3.3 and higher put a py.exe
into the windows folder. [link]
This executable is used to determine the python version with the first line of the file:
#!/usr/bin/python2.7
will be executed with Python 2.7.
You must install the Python 3 version after you installed the other Python versions.
Additional ressources: https://docs.python.org/3/using/windows.html#customization
pywin https://pypi.python.org/pypi/pywin
Old Solution
I guess you use windows. I solved this problem with a hack:
Every time I start python on windows a python.bat will be used.
This starts a python.py that analyses the file for the header after #! for the python version.
To start example.py I type into the console
python example.py
but it could also be started per klick.
this is my python file
C:\bin\python.py
#!/usr/bin/env python2
import sys
import os
args = sys.argv
if len(args) <= 1:
# no arguments
# start python console
i = os.system('C:\bin\python2.bat' + " ".join(args[1:]))
if type(i) != int:
i = 0
exit(i)
def analyse(filename, default = ''):
'''=> '2', '3', default '''
try:
f = open(filename)
except IOError:
# file not found
return default
firstLine = f.readline()
if firstLine.startswith('#!'):
if 'python2' in firstLine:
return '2'
if 'python3' in firstLine:
return '3'
i = firstLine.find(' ')
if i != -1:
# analyse from end of path on
in2 = '2' in firstLine[i:]
in3 = '3' in firstLine[i:]
if in2 and not in3:
return '2'
if in3 and not in2:
return '3'
else:
# analyse path
in2 = '2' in firstLine
in3 = '3' in firstLine
if in2 and not in3:
return '2'
if in3 and not in2:
return '3'
return default
no = analyse(args[1], default = '2')
if args[1][-1:] == 'w':
# python win
cmd = 'C:\bin\pythonw%s.bat'
else:
cmd = 'C:\bin\python%s.bat'
i = os.system(cmd % no + ' ' + " ".join(args[1:]))
if type(i) != int:
i = 0
exit(i)
This is the C:\bin\python.bat file
@echo off
C:\bin\python2 C:\bin\python.py %*
rem this may also work:
rem C:\bin\python.py %*
and in every file you start you have to put either
#!/bin/env/python3
or
#!/bin/env/python2
default is python2
Then I added those files to the folder:
C:\bin\python2.bat
@echo off
C:\python27\python.exe %*
C:\bin\pythonw2.bat
@echo off
C:\python27\pythonw.exe %*
C:\python3.bat
@echo off
C:\python32\pythonw.exe %*
C:\bin\pythonw3.bat
@echo off
C:\python32\pythonw.exe %*
If you are using python26 instead if python27 then you need to change
C:\python27
to
C:\python26
and so on. Same with python not using python 32.
You may also want to start python files per klick
then do this:
klick right on a .py file
-> open with
-> select C:\bin\python.bat
If you get problems contact me or leave a comment.