Example #1
0
 def LoadBuiltinInterpreter(self):
     builtin_interpreter = Interpreter.BuiltinPythonInterpreter(
         BUILTIN_INTERPRETER_NAME, sys.executable)
     self.interpreters.append(builtin_interpreter)
Example #2
0
    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