本文整理汇总了C#中IPythonInterpreterFactory.FindModulesAsync方法的典型用法代码示例。如果您正苦于以下问题:C# IPythonInterpreterFactory.FindModulesAsync方法的具体用法?C# IPythonInterpreterFactory.FindModulesAsync怎么用?C# IPythonInterpreterFactory.FindModulesAsync使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IPythonInterpreterFactory
的用法示例。
在下文中一共展示了IPythonInterpreterFactory.FindModulesAsync方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: TryGetCondaFactoryAsync
private static async Task<IPythonInterpreterFactory> TryGetCondaFactoryAsync(
IPythonInterpreterFactory target,
IInterpreterOptionsService service
) {
var condaMetaPath = CommonUtils.GetAbsoluteDirectoryPath(
target.Configuration.PrefixPath,
"conda-meta"
);
if (!Directory.Exists(condaMetaPath)) {
return null;
}
string metaFile;
try {
metaFile = Directory.EnumerateFiles(condaMetaPath, "*.json").FirstOrDefault();
} catch (Exception ex) {
if (ex.IsCriticalException()) {
throw;
}
return null;
}
if (!string.IsNullOrEmpty(metaFile)) {
string text = string.Empty;
try {
text = File.ReadAllText(metaFile);
} catch (Exception ex) {
if (ex.IsCriticalException()) {
throw;
}
}
var m = Regex.Match(text, @"\{[^{]+link.+?\{.+?""source""\s*:\s*""(.+?)""", RegexOptions.Singleline);
if (m.Success) {
var pkg = m.Groups[1].Value;
if (!Directory.Exists(pkg)) {
return null;
}
var prefix = Path.GetDirectoryName(Path.GetDirectoryName(pkg));
var factory = service.Interpreters.FirstOrDefault(
f => CommonUtils.IsSameDirectory(f.Configuration.PrefixPath, prefix)
);
if (factory != null && !(await factory.FindModulesAsync("conda")).Any()) {
factory = null;
}
return factory;
}
}
if ((await target.FindModulesAsync("conda")).Any()) {
return target;
}
return null;
}
示例2: 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);
}
示例3: Install
public static async Task<bool> Install(
IServiceProvider provider,
IPythonInterpreterFactory factory,
string package,
bool elevate,
Redirector output = null
) {
factory.ThrowIfNotRunnable("factory");
if (!(await factory.FindModulesAsync("pip")).Any()) {
await InstallPip(provider, factory, elevate, output);
}
using (var proc = Run(factory, output, elevate, "install", GetInsecureArg(factory, output), package)) {
await proc;
return proc.ExitCode == 0;
}
}
示例4: 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));
}