如何从C#使用CPython调试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执行和调试C#项目中的python脚本。
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);
            }