Этот веб-сайт примечания, что можно использовать класс ControlPaint в Системе BCL C#. Windows. Пространство имен форм.
Если вам просто нужна текстовая версия, вы можете сделать:
engine.GetService<ExceptionOperations>().FormatException(exception);
Если вам действительно нужен объект отслеживания Python, я бы предложил:
Func<PythonTuple> exc_info = engine.Operations.GetMember<Func<PythonTuple>>(engine.GetSysModule(), "exc_info");
Сохраните это где-нибудь полезное, а затем, когда вам нужно вызвать его:
TraceBack tb = (TraceBack)exc_info()[2];
Это будет работать, пока вы перехватываете исключение.
Немного менее поддерживаемый, но более простой способ сделать это:
TraceBack tb = PythonOps.GetExceptionInfoLocal(context, exception)[2];
Но для этого вам нужен CodeContext. В 2.0 вы можете получить CodeContext следующим образом:
new CodeContext(new PythonDictionary(), HostingHelpers.GetLanguageContext(engine));