def LoadBuiltinInterpreter(self): builtin_interpreter = Interpreter.BuiltinPythonInterpreter( BUILTIN_INTERPRETER_NAME, sys.executable) self.interpreters.append(builtin_interpreter)
def LoadPythonInterpretersFromConfig(self): config = wx.ConfigBase_Get() if sysutils.isWindows(): data = config.Read(self.KEY_PREFIX) if not data: return False has_builtin_interpreter = False lst = pickle.loads(data.encode('ascii')) for l in lst: is_builtin = l.get('is_builtin', False) if is_builtin: interpreter = Interpreter.BuiltinPythonInterpreter( l['name'], l['path'], l['id']) has_builtin_interpreter = True else: interpreter = Interpreter.PythonInterpreter( l['name'], l['path'], l['id'], True) interpreter.Default = l['default'] if interpreter.Default: self.SetDefaultInterpreter(interpreter) data = { 'version': l['version'], 'builtins': l['builtins'], #'path_list' is the old key name of sys_path_list,we should make compatible of old version 'sys_path_list': l.get('sys_path_list', l.get('path_list')), 'python_path_list': l.get('python_path_list', []), 'is_builtin': is_builtin } interpreter.SetInterpreter(**data) interpreter.HelpPath = l.get('help_path', '') interpreter.Environ.SetEnviron(l.get('environ', {})) interpreter.Packages = l.get('packages', {}) self.interpreters.append(interpreter) app_debugLogger.info('load python interpreter from app config success,name is %s,path is %s,version is %s,is builtin %s',\ interpreter.Name,interpreter.Path,interpreter.Version,interpreter.IsBuiltIn) if len(self.interpreters) > 1 or (len(self.interpreters) == 1 and not has_builtin_interpreter): return True else: prefix = self.KEY_PREFIX data = config.Read(prefix) if not data: return False ids = data.split(os.pathsep) for id in ids: name = config.Read("%s/%s/Name" % (prefix, id)) path = config.Read("%s/%s/Path" % (prefix, id)) is_default = config.ReadInt("%s/%s/Default" % (prefix, id)) version = config.Read("%s/%s/Version" % (prefix, id)) sys_paths = config.Read("%s/%s/SysPathList" % (prefix, id)) python_path_list = config.Read( "%s/%s/PythonPathList" % (prefix, id), "") builtins = config.Read("%s/%s/Builtins" % (prefix, id)) environ = json.loads( config.Read("%s/%s/Environ" % (prefix, id), "{}")) packages = json.loads( config.Read("%s/%s/Packages" % (prefix, id), "{}")) interpreter = Interpreter.PythonInterpreter( name, path, id, True) interpreter.Default = is_default interpreter.Environ.SetEnviron(environ) interpreter.Packages = packages if interpreter.Default: self.SetDefaultInterpreter(interpreter) data = { 'version': version, 'builtins': builtins.split(os.pathsep), 'sys_path_list': sys_paths.split(os.pathsep), 'python_path_list': python_path_list.split(os.pathsep) } interpreter.SetInterpreter(**data) self.interpreters.append(interpreter) if len(self.interpreters) > 0: return True return False