Detect python in Windows LocalAppData install locations

This commit is contained in:
Alan Hamlett 2020-02-09 23:33:39 -08:00
parent 8acda0157a
commit 885c11f01a

View File

@ -213,7 +213,7 @@ def log(lvl, message, *args, **kwargs):
def resources_folder(): def resources_folder():
if platform.system() == 'Windows': if is_win:
return os.path.join(os.getenv('APPDATA'), 'WakaTime') return os.path.join(os.getenv('APPDATA'), 'WakaTime')
else: else:
return os.path.join(os.path.expanduser('~'), '.wakatime') return os.path.join(os.path.expanduser('~'), '.wakatime')
@ -332,6 +332,21 @@ def python_binary():
'/usr/local/bin/', '/usr/local/bin/',
'/usr/bin/', '/usr/bin/',
] ]
if is_win and os.getenv('LOCALAPPDATA'):
appdata = os.getenv('LOCALAPPDATA')
ver = 39
while ver >= 27:
if ver >= 30 and ver <= 33:
ver -= 1
continue
paths.append('\\python{ver}\\'.format(ver=ver))
paths.append.push('\\Python{ver}\\'.format(ver=ver))
paths.append('{appdata}\\Programs\Python{ver}\\'.format(appdata=appdata, ver=ver))
paths.append('{appdata}\\Programs\Python{ver}-32\\'.format(appdata=appdata, ver=ver))
paths.append('{appdata}\\Programs\Python{ver}-64\\'.format(appdata=appdata, ver=ver))
ver -= 1
for path in paths: for path in paths:
path = find_python_in_folder(path) path = find_python_in_folder(path)
if path is not None: if path is not None:
@ -358,7 +373,7 @@ def set_python_binary_location(path):
def find_python_from_registry(location, reg=None): def find_python_from_registry(location, reg=None):
if platform.system() != 'Windows' or winreg is None: if not is_win or winreg is None:
return None return None
if reg is None: if reg is None:
@ -747,7 +762,7 @@ def plugin_loaded():
if not python_binary(): if not python_binary():
log(WARNING, 'Python binary not found.') log(WARNING, 'Python binary not found.')
if platform.system() == 'Windows': if is_win:
set_timeout(download_python, 0) set_timeout(download_python, 0)
else: else:
sublime.error_message("Unable to find Python binary!\nWakaTime needs Python to work correctly.\n\nGo to https://www.python.org/downloads") sublime.error_message("Unable to find Python binary!\nWakaTime needs Python to work correctly.\n\nGo to https://www.python.org/downloads")