Как отладить скрипт python, используя CPython из C#? - PullRequest
1 голос
/ 13 апреля 2020

Я использую Iron Python для выполнения и отладки python сценариев из проекта C#. Iron Python предоставляет функцию settrace () для отслеживания выполнения каждой python строки.

IronPythonEngine.SetTrace(TracePython);

TracebackDelegate TracePython(TraceBackFrame current_frame, string current_result, object current_payload)
{
    // Code
}

Теперь я должен использовать CPython вместо Iron Python. Ниже приведен код, с помощью которого я запускаю python код, используя CPython из 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);
            }

Как реализовать такую ​​же функциональность settrace с использованием CPython двигателя в C#

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...