public DefaultInterpreterSetter SelectDefaultInterpreter(PythonVersion interp, string installPackages) { interp.AssertInstalled(); if (interp.IsIronPython && !string.IsNullOrEmpty(installPackages)) { Assert.Inconclusive("Package installation not supported on IronPython"); } var interpreterService = InterpreterService; var factory = interpreterService.FindInterpreter(interp.Id); var defaultInterpreterSetter = new DefaultInterpreterSetter(factory, ServiceProvider); try { if (!string.IsNullOrEmpty(installPackages)) { var pm = OptionsService.GetPackageManagers(factory).FirstOrDefault(); var ui = new TestPackageManagerUI(); pm.PrepareAsync(ui, CancellationTokens.After60s).WaitAndUnwrapExceptions(); foreach (var package in installPackages.Split(' ', ',', ';').Select(s => s.Trim()).Where(s => !string.IsNullOrEmpty(s))) { pm.InstallAsync(new PackageSpec(package), ui, CancellationTokens.After60s).WaitAndUnwrapExceptions(); } } Assert.AreEqual(factory.Configuration.Id, OptionsService.DefaultInterpreterId); var result = defaultInterpreterSetter; defaultInterpreterSetter = null; return(result); } finally { if (defaultInterpreterSetter != null) { defaultInterpreterSetter.Dispose(); } } }
public DefaultInterpreterSetter SelectDefaultInterpreter(PythonVersion interp, string installPackages) { interp.AssertInstalled(); if (interp.IsIronPython && !string.IsNullOrEmpty(installPackages)) { Assert.Inconclusive("Package installation not supported on IronPython"); } var interpreterService = InterpreterService; var factory = interpreterService.FindInterpreter(interp.Id, interp.Configuration.Version); var defaultInterpreterSetter = new DefaultInterpreterSetter(factory); try { if (!string.IsNullOrEmpty(installPackages)) { Pip.InstallPip(ServiceProvider, factory, false).Wait(); foreach (var package in installPackages.Split(' ', ',', ';').Select(s => s.Trim()).Where(s => !string.IsNullOrEmpty(s))) { Pip.Install(ServiceProvider, factory, package, false).Wait(); } } var result = defaultInterpreterSetter; defaultInterpreterSetter = null; return result; } finally { if (defaultInterpreterSetter != null) { defaultInterpreterSetter.Dispose(); } } }