detect python binary by executing interpreter

This commit is contained in:
Alan Hamlett 2015-03-09 14:32:27 -07:00
parent 60c8ea4454
commit 307029c37a
1 changed files with 25 additions and 9 deletions

View File

@ -18,7 +18,7 @@ import sys
import time import time
import threading import threading
import webbrowser import webbrowser
from os.path import expanduser, dirname, basename, realpath, join, exists from os.path import expanduser, dirname, basename, realpath, join
# globals # globals
ACTION_FREQUENCY = 2 ACTION_FREQUENCY = 2
@ -34,6 +34,7 @@ LAST_ACTION = {
} }
HAS_SSL = False HAS_SSL = False
LOCK = threading.RLock() LOCK = threading.RLock()
PYTHON_LOCATION = None
# add wakatime package to path # add wakatime package to path
sys.path.insert(0, join(PLUGIN_DIR, 'packages', 'wakatime')) sys.path.insert(0, join(PLUGIN_DIR, 'packages', 'wakatime'))
@ -101,16 +102,31 @@ def prompt_api_key():
def python_binary(): def python_binary():
if platform.system() == 'Windows': global PYTHON_LOCATION
if PYTHON_LOCATION is not None:
return PYTHON_LOCATION
paths = [
"pythonw",
"python",
"/usr/local/bin/python",
"/usr/bin/python",
]
for path in paths:
try: try:
Popen(['pythonw', '--version']) Popen([path, '--version'])
return 'pythonw' PYTHON_LOCATION = path
return path
except: except:
for path in glob.iglob('/python*'): pass
if exists(realpath(join(path, 'pythonw.exe'))): for path in glob.iglob('/python*'):
return realpath(join(path, 'pythonw')) path = realpath(join(path, 'pythonw'))
return None try:
return 'python' Popen([path, '--version'])
PYTHON_LOCATION = path
return path
except:
pass
return None
def enough_time_passed(now, last_time): def enough_time_passed(now, last_time):