使用c#激活虚拟环境
Activate Virtual environment using c#
是否可以在不使用 anaconda 提示符的情况下激活创建的虚拟环境?
例如,我想在 c# 中激活我的虚拟环境以执行我的 python 代码。
这是我当前的代码
private void CallPython()
{
// 1) Create Process Info
var psi = new ProcessStartInfo();
psi.FileName = @"C:\Anaconda3\envs\MTCNN\python.exe";
// 2) Provide script and arguments
//THERMAL CAMERA
var script = @"D:\Dekstop\thermal_MTCNN.py";
psi.Arguments = $"\"{script}\"";
// 3) Process configuration
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
psi.RedirectStandardOutput = true;
// 4) Execute process and get output
var process = Process.Start(psi);
process.StandardOutput.ReadToEnd();
}
好像我的python代码无法执行,因为虚拟环境没有激活。
有没有人知道如何不使用提示激活环境?
我找到了执行此操作的方法,但我仍然必须打开命令提示符。
首先,我在visual studio中创建了一个控制台项目。然后,我通过转到项目的属性并将输出类型更改为 Windows 应用程序,将控制台变成 Windows 应用程序。之后更改您的代码
class ProjectTitle
到
public partial class ProjectTitle : Form
然后重建项目。然后,这会将您的 program.cs 转为 Windows 表格申请。
运行 您使用此代码生成的 Windows 表单
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Program());
}
然后创建一个构造函数来初始化windows形式的组件,因此添加这段代码
public Program()
{
InitializeComponent();
}
然后,您现在可以像普通 windows 表单一样创建 windows 表单设计,例如拖放工具(按钮等)
为了回答我的问题,以下是使用 C#
激活虚拟环境的方法
Process process = new Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.UseShellExecute = false;
process.Start();
process.StandardInput.WriteLine("activate virtualenvName");
process.StandardInput.WriteLine("cd C:\PathWhereYourPythonIsLocated");
process.StandardInput.WriteLine("python hello.py");
process.StandardInput.Flush();
process.StandardInput.Close();
Console.WriteLine(process.StandardOutput.ReadToEnd());
Console.ReadKey();
原来如此!我这样做的原因是因为我希望我的输出嵌入 C# Winform 的图片框。我对 python 和 c# 嵌入有点陌生,所以我希望这对您有所帮助
是否可以在不使用 anaconda 提示符的情况下激活创建的虚拟环境? 例如,我想在 c# 中激活我的虚拟环境以执行我的 python 代码。
这是我当前的代码
private void CallPython()
{
// 1) Create Process Info
var psi = new ProcessStartInfo();
psi.FileName = @"C:\Anaconda3\envs\MTCNN\python.exe";
// 2) Provide script and arguments
//THERMAL CAMERA
var script = @"D:\Dekstop\thermal_MTCNN.py";
psi.Arguments = $"\"{script}\"";
// 3) Process configuration
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
psi.RedirectStandardOutput = true;
// 4) Execute process and get output
var process = Process.Start(psi);
process.StandardOutput.ReadToEnd();
}
好像我的python代码无法执行,因为虚拟环境没有激活。 有没有人知道如何不使用提示激活环境?
我找到了执行此操作的方法,但我仍然必须打开命令提示符。
首先,我在visual studio中创建了一个控制台项目。然后,我通过转到项目的属性并将输出类型更改为 Windows 应用程序,将控制台变成 Windows 应用程序。之后更改您的代码
class ProjectTitle
到
public partial class ProjectTitle : Form
然后重建项目。然后,这会将您的 program.cs 转为 Windows 表格申请。
运行 您使用此代码生成的 Windows 表单
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Program());
}
然后创建一个构造函数来初始化windows形式的组件,因此添加这段代码
public Program()
{
InitializeComponent();
}
然后,您现在可以像普通 windows 表单一样创建 windows 表单设计,例如拖放工具(按钮等)
为了回答我的问题,以下是使用 C#
激活虚拟环境的方法 Process process = new Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.UseShellExecute = false;
process.Start();
process.StandardInput.WriteLine("activate virtualenvName");
process.StandardInput.WriteLine("cd C:\PathWhereYourPythonIsLocated");
process.StandardInput.WriteLine("python hello.py");
process.StandardInput.Flush();
process.StandardInput.Close();
Console.WriteLine(process.StandardOutput.ReadToEnd());
Console.ReadKey();
原来如此!我这样做的原因是因为我希望我的输出嵌入 C# Winform 的图片框。我对 python 和 c# 嵌入有点陌生,所以我希望这对您有所帮助