本文整理汇总了C#中IPythonInterpreterFactory.ThrowIfNotRunnable方法的典型用法代码示例。如果您正苦于以下问题:C# IPythonInterpreterFactory.ThrowIfNotRunnable方法的具体用法?C# IPythonInterpreterFactory.ThrowIfNotRunnable怎么用?C# IPythonInterpreterFactory.ThrowIfNotRunnable使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IPythonInterpreterFactory
的用法示例。
在下文中一共展示了IPythonInterpreterFactory.ThrowIfNotRunnable方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Run
private static ProcessOutput Run(
IPythonInterpreterFactory factory,
Redirector output,
bool elevate,
params string[] cmd
) {
factory.ThrowIfNotRunnable("factory");
IEnumerable<string> args;
if (factory.Configuration.Version >= SupportsDashMPip) {
args = new[] { "-m", "pip" }.Concat(cmd);
} else {
// Manually quote the code, since we are passing false to
// quoteArgs below.
args = new[] { "-c", "\"import pip; pip.main()\"" }.Concat(cmd);
}
return ProcessOutput.Run(
factory.Configuration.InterpreterPath,
args,
factory.Configuration.PrefixPath,
UnbufferedEnv,
false,
output,
quoteArgs: false,
elevate: elevate
);
}
示例2: GetEasyInstallPath
private static string GetEasyInstallPath(IPythonInterpreterFactory factory, out bool isScript) {
factory.ThrowIfNotRunnable("factory");
foreach (var path in EasyInstallLocations) {
string easyInstallPath = Path.Combine(factory.Configuration.PrefixPath, path.Key);
isScript = path.Value;
if (File.Exists(easyInstallPath)) {
return easyInstallPath;
}
}
isScript = false;
return null;
}
示例3: Install
public static async Task<bool> Install(
IServiceProvider provider,
IPythonInterpreterFactory factory,
IInterpreterOptionsService service,
string package,
Redirector output = null
) {
factory.ThrowIfNotRunnable("factory");
var condaFactory = await TryGetCondaFactoryAsync(factory, service); ;
if (condaFactory == null) {
throw new InvalidOperationException("Cannot find conda");
}
condaFactory.ThrowIfNotRunnable();
if (output != null) {
output.WriteLine(SR.GetString(SR.PackageInstalling, package));
if (provider.GetPythonToolsService().GeneralOptions.ShowOutputWindowForPackageInstallation) {
output.ShowAndActivate();
} else {
output.Show();
}
}
using (var proc = ProcessOutput.Run(
condaFactory.Configuration.InterpreterPath,
new[] { "-m", "conda", "install", "--yes", "-n", factory.Configuration.PrefixPath, package },
factory.Configuration.PrefixPath,
UnbufferedEnv,
false,
output
)) {
var exitCode = await proc;
if (output != null) {
if (exitCode == 0) {
output.WriteLine(SR.GetString(SR.PackageInstallSucceeded, package));
} else {
output.WriteLine(SR.GetString(SR.PackageInstallFailedExitCode, package, exitCode));
}
if (provider.GetPythonToolsService().GeneralOptions.ShowOutputWindowForPackageInstallation) {
output.ShowAndActivate();
} else {
output.Show();
}
}
return exitCode == 0;
}
}
示例4: Create
/// <summary>
/// Creates a virtual environment. If virtualenv is not installed, the
/// task will succeed but error text will be passed to the redirector.
/// </summary>
public static Task Create(IServiceProvider provider, IPythonInterpreterFactory factory, string path, Redirector output = null) {
factory.ThrowIfNotRunnable();
return ContinueCreate(provider, factory, path, false, output);
}
示例5: CreateAndInstallDependencies
/// <summary>
/// Creates a virtual environment. If virtualenv or pip are not
/// installed then they are downloaded and installed automatically.
/// </summary>
public static async Task CreateAndInstallDependencies(
IServiceProvider provider,
IPythonInterpreterFactory factory,
string path,
Redirector output = null
) {
factory.ThrowIfNotRunnable("factory");
var modules = await factory.FindModulesAsync("pip", "virtualenv", "venv");
bool hasPip = modules.Contains("pip");
bool hasVirtualEnv = modules.Contains("virtualenv") || modules.Contains("venv");
if (!hasVirtualEnv) {
if (!hasPip) {
bool elevate = provider.GetPythonToolsService().GeneralOptions.ElevatePip;
await Pip.InstallPip(provider, factory, elevate, output);
}
if (!await Install(provider, factory, output)) {
throw new InvalidOperationException(SR.GetString(SR.VirtualEnvCreationFailed, path));
}
}
await ContinueCreate(provider, factory, path, false, output);
}
示例6: Install
public static async Task<bool> Install(
IServiceProvider provider,
IPythonInterpreterFactory factory,
string package,
IServiceProvider site,
bool elevate,
Redirector output = null
) {
factory.ThrowIfNotRunnable("factory");
bool isScript;
if (site != null && GetEasyInstallPath(factory, out isScript) == null) {
await Pip.QueryInstallPip(factory, site, Strings.InstallEasyInstall, elevate, output);
}
if (output != null) {
output.WriteLine(Strings.PackageInstalling.FormatUI(package));
if (provider.GetPythonToolsService().GeneralOptions.ShowOutputWindowForPackageInstallation) {
output.ShowAndActivate();
} else {
output.Show();
}
}
var exitCode = await ContinueRun(factory, output, elevate, package);
if (output != null) {
if (exitCode == 0) {
output.WriteLine(Strings.PackageInstallSucceeded.FormatUI(package));
} else {
output.WriteLine(Strings.PackageInstallFailedExitCode.FormatUI(package, exitCode));
}
if (provider.GetPythonToolsService().GeneralOptions.ShowOutputWindowForPackageInstallation) {
output.ShowAndActivate();
} else {
output.Show();
}
}
return exitCode == 0;
}
示例7: InstallPip
public static async Task InstallPip(IServiceProvider provider, IPythonInterpreterFactory factory, bool elevate, Redirector output = null) {
factory.ThrowIfNotRunnable("factory");
var pipDownloaderPath = PythonToolsInstallPath.GetFile("pip_downloader.py");
if (output != null) {
output.WriteLine(SR.GetString(SR.PipInstalling));
if (provider.GetPythonToolsService().GeneralOptions.ShowOutputWindowForPackageInstallation) {
output.ShowAndActivate();
} else {
output.Show();
}
}
using (var proc = ProcessOutput.Run(
factory.Configuration.InterpreterPath,
new[] { pipDownloaderPath },
factory.Configuration.PrefixPath,
null,
false,
output,
elevate: elevate
)) {
var exitCode = await proc;
if (output != null) {
if (exitCode == 0) {
output.WriteLine(SR.GetString(SR.PipInstallSucceeded));
} else {
output.WriteLine(SR.GetString(SR.PipInstallFailedExitCode, exitCode));
}
if (provider.GetPythonToolsService().GeneralOptions.ShowOutputWindowForPackageInstallation) {
output.ShowAndActivate();
} else {
output.Show();
}
}
}
}
示例8: QueryInstallPip
public static async Task QueryInstallPip(
IPythonInterpreterFactory factory,
IServiceProvider site,
string message,
bool elevate,
Redirector output = null
) {
factory.ThrowIfNotRunnable("factory");
if (Microsoft.VisualStudio.Shell.VsShellUtilities.ShowMessageBox(
site,
message,
null,
OLEMSGICON.OLEMSGICON_QUERY,
OLEMSGBUTTON.OLEMSGBUTTON_OKCANCEL,
OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST
) == 2) {
throw new OperationCanceledException();
}
await InstallPip(site, factory, elevate, output);
}
示例9: Uninstall
public static async Task<bool> Uninstall(
IServiceProvider provider,
IPythonInterpreterFactory factory,
string package,
bool elevate,
Redirector output = null
) {
factory.ThrowIfNotRunnable("factory");
if (output != null) {
output.WriteLine(SR.GetString(SR.PackageUninstalling, package));
if (provider.GetPythonToolsService().GeneralOptions.ShowOutputWindowForPackageInstallation) {
output.ShowAndActivate();
} else {
output.Show();
}
}
using (var proc = Run(factory, output, elevate, "uninstall", "-y", package)) {
var exitCode = await proc;
if (output != null) {
if (exitCode == 0) {
output.WriteLine(SR.GetString(SR.PackageUninstallSucceeded, package));
} else {
output.WriteLine(SR.GetString(SR.PackageUninstallFailedExitCode, package, exitCode));
}
if (provider.GetPythonToolsService().GeneralOptions.ShowOutputWindowForPackageInstallation) {
output.ShowAndActivate();
} else {
output.Show();
}
}
return exitCode == 0;
}
}
示例10: Install
public static async Task<bool> Install(
IServiceProvider provider,
IPythonInterpreterFactory factory,
string package,
IServiceProvider site,
bool elevate,
Redirector output = null
) {
factory.ThrowIfNotRunnable("factory");
if (!(await factory.FindModulesAsync("pip")).Any()) {
if (site != null) {
try {
await QueryInstallPip(factory, site, SR.GetString(SR.InstallPip), elevate, output);
} catch (OperationCanceledException) {
return false;
}
} else {
await InstallPip(provider, factory, elevate, output);
}
}
if (output != null) {
output.WriteLine(SR.GetString(SR.PackageInstalling, package));
if (provider.GetPythonToolsService().GeneralOptions.ShowOutputWindowForPackageInstallation) {
output.ShowAndActivate();
} else {
output.Show();
}
}
using (var proc = Run(factory, output, elevate, "install", GetInsecureArg(factory, output), package)) {
var exitCode = await proc;
if (output != null) {
if (exitCode == 0) {
output.WriteLine(SR.GetString(SR.PackageInstallSucceeded, package));
} else {
output.WriteLine(SR.GetString(SR.PackageInstallFailedExitCode, package, exitCode));
}
if (provider.GetPythonToolsService().GeneralOptions.ShowOutputWindowForPackageInstallation) {
output.ShowAndActivate();
} else {
output.Show();
}
}
return exitCode == 0;
}
}
示例11: CreateAndInstallDependencies
/// <summary>
/// Creates a virtual environment. If virtualenv or pip are not
/// installed then they are downloaded and installed automatically.
/// </summary>
public static async Task CreateAndInstallDependencies(
IServiceProvider provider,
IPythonInterpreterFactory factory,
string path
) {
factory.ThrowIfNotRunnable("factory");
var cancel = CancellationToken.None;
var ui = new VsPackageManagerUI(provider);
var pm = factory.PackageManager;
if (pm == null) {
throw new InvalidOperationException(Strings.PackageManagementNotSupported);
}
if (!pm.IsReady) {
await pm.PrepareAsync(ui, cancel);
if (!pm.IsReady) {
throw new InvalidOperationException(Strings.VirtualEnvCreationFailed.FormatUI(path));
}
}
var modules = await factory.FindModulesAsync("virtualenv", "venv");
bool hasVirtualEnv = modules.Contains("virtualenv") || modules.Contains("venv");
if (!hasVirtualEnv) {
if (!await Install(provider, factory)) {
throw new InvalidOperationException(Strings.VirtualEnvCreationFailed.FormatUI(path));
}
}
await ContinueCreate(provider, factory, path, false, PackageManagerUIRedirector.Get(pm, ui));
}
示例12: CreateWithVEnv
/// <summary>
/// Creates a virtual environment using venv. If venv is not available,
/// the task will succeed but error text will be passed to the
/// redirector.
/// </summary>
public static Task CreateWithVEnv(IServiceProvider provider, IPythonInterpreterFactory factory, string path) {
factory.ThrowIfNotRunnable();
return ContinueCreate(provider, factory, path, true, OutputWindowRedirector.GetGeneral(provider));
}