Source code for wolframclient.evaluation.kernel.path

# -*- coding: utf-8 -*-

from __future__ import absolute_import, print_function, unicode_literals

from wolframclient.utils import six
from wolframclient.utils.api import os


[docs]def explore_paths(*paths): highest_version = -1 best_path = None for root in paths: if os.isdir(root): for version in os.listdir(root): full_path = os.path_join(root, version) if os.isdir(full_path): try: v_num = float(version) except ValueError: v_num = -2 if v_num > highest_version and v_num > 0: highest_version = v_num best_path = full_path if best_path: yield best_path
[docs]def installation_directories(): env = os.environ.get('WOLFRAM_INSTALLATION_DIRECTORY', None) if env: yield env if six.WINDOWS: for p in explore_paths( 'C:\\Program Files\\Wolfram Research\\Wolfram Desktop', 'C:\\Program Files\\Wolfram Research\\Mathematica'): yield p elif six.LINUX: for p in explore_paths('/usr/local/Wolfram/Desktop' '/usr/local/Wolfram/Mathematica'): yield p elif six.MACOS: yield '/Applications/Wolfram Desktop.app/Contents' yield '/Applications/Mathematica.app/Contents'
[docs]def exe_path(): if six.WINDOWS: return 'WolframKernel.exe' elif six.LINUX: return 'Executables/WolframKernel' elif six.MACOS: return 'MacOS/WolframKernel'
[docs]def find_default_kernel_path(): """ Look for the most recent installed kernel. """ rel = exe_path() for path in installation_directories(): if rel: path = os.path_join(path, rel) if os.isfile(path): return path