private static IEnumerable <PythonInterpreterInformation> FindWorkspaceInterpreters(IPythonWorkspaceContext workspace) { var found = new List <PythonInterpreterInformation>(); if (workspace != null) { // First look in workspace subfolders found.AddRange(FindInterpretersInSubFolders(workspace.Location).Where(p => p != null)); // Then look at the currently set interpreter path, // because it may point to a folder outside of the workspace, // or in a deep subfolder that we don't look into. var interpreter = workspace.ReadInterpreterSetting(); if (PathUtils.IsValidPath(interpreter) && !Path.IsPathRooted(interpreter)) { interpreter = workspace.MakeRooted(interpreter); } // Make sure it wasn't already discovered if (File.Exists(interpreter) && !found.Any(p => PathUtils.IsSamePath(p.Configuration.InterpreterPath, interpreter))) { var info = CreateEnvironmentInfo(interpreter); if (info != null) { found.Add(info); } } } return(found); }