blob: 981a21c66219a41796a4e1e53b08fc47d75fdc61 [file] [log] [blame]
import sys, string, os, glob, re
def extract_version(path):
match = re.search(r'/python(\d+)\.(\d+)$', path)
if match:
return (int(match.group(1)), int(match.group(2)))
else:
return None
def find_newest_python():
pythons = []
pythons.extend(glob.glob('/usr/bin/python*'))
pythons.extend(glob.glob('/usr/local/bin/python*'))
best_python = (0, 0), ''
for python in pythons:
version = extract_version(python)
if version > best_python[0] and version >= (2, 4):
best_python = version, python
if best_python[0] == (0, 0):
raise ValueError('Python 2.4 or newer is needed')
return best_python[1]
def restart():
python = find_newest_python()
sys.argv.insert(0, '-u')
sys.argv.insert(0, python)
os.execv(sys.argv[0], sys.argv)
def check_python_version():
version = None
try:
version = sys.version_info[0:2]
except AttributeError:
pass # pre 2.0, no neat way to get the exact number
if not version or version < (2, 4):
restart()