如何从C#使用CPython调试python脚本?
我正在使用IronPython执行和调试C#项目中的python脚本。如何从C#使用CPython调试python脚本?,c#,ironpython,cpython,C#,Ironpython,Cpython,我正在使用IronPython执行和调试C#项目中的python脚本。 IronPython提供settrace()函数来跟踪每一行python的执行情况 IronPythonEngine.SetTrace(TracePython); TracebackDelegate TracePython(TraceBackFrame current_frame, string current_result, object current_payload) { // Code } 现在,我必须使
IronPython提供settrace()函数来跟踪每一行python的执行情况
IronPythonEngine.SetTrace(TracePython);
TracebackDelegate TracePython(TraceBackFrame current_frame, string current_result, object current_payload)
{
// Code
}
现在,我必须使用CPython而不是IronPython。下面是我如何使用C#中的CPython运行python代码的代码
如何在C#中使用CPython引擎实现相同的settrace功能?请澄清:如何从C#运行CPython?我已经相应地修改了我的帖子。如果有任何问题,请告诉我。很清楚:)没有使用Python.Net,但我认为您必须调用sys.settrace并向其中传递一个C函数。请澄清:如何从C运行CPython?我已经相应地修改了我的帖子。如果有任何问题,请让我知道。全部清除:)没有使用Python.Net,但我认为您必须调用sys.settrace并向其中传递一个C#函数。。
using (Py.GIL())
{
dynamic sys = PythonEngine.ImportModule("sys");
string codeToRedirectOutput =
"import sys\n" +
"from io import StringIO\n" +
"sys.stdout = mystdout = StringIO()\n" +
"sys.stdout.flush()\n" +
"sys.stderr = mystderr = StringIO()\n" +
"sys.stderr.flush()\n";
PythonEngine.RunString(codeToRedirectOutput);
string code =
"a = 6\n" +
"b = 7\n" +
"c = a + b\n" +
"print('This is a Python Example')\n" +
"print(c)\n";
PythonEngine.Exec(code);
string pyStdout = sys.stdout.getvalue();
pyStdout = pyStdout.Replace("\n", "\r\n");
Console.WriteLine(pyStdout);
}