Как перенаправить вывод с python

Я новичок в Айронпитоне. Я хочу использовать его в моем приложении c#. В принципе, я пытаюсь скопировать все stdout из IronPython и получить его в чем-то вроде строки. Я следовал этому учебнику — https://blogs.msdn.microsoft.com/seshadripv/2008/07/08/how-to-redirect-output-from-python-using-the-dlr-hosting-api/

Но объект MemoryStream всегда пуст.

Что может пойти не так?

1 ответ

  1. Есть изменения в скриптах API.

    Использовать IronPython в c#:

    1) установите пакет Nuget

      Install-Package IronPython.StdLib
      Install-Package IronPython
    

    2) чтобы запустить демо, измените код:

      // ScriptRuntime runTime = ScriptRuntime.Create();  //create is not available
        ScriptRuntime runTime = ScriptRuntime.CreateFromConfiguration();
    

    3) используя агрегат:

      using IronPython.Hosting;
      using Microsoft.Scripting;
      using Microsoft.Scripting.Hosting;
    

    4) добавьте следующее В приложение.конфиг:

       <?xml version="1.0" encoding="utf-8" ?>
     <configuration>
      <configSections>
      <section name="microsoft.scripting" type="Microsoft.Scripting.Hosting.Configuration.Section, Microsoft.Scripting"/>
      </configSections>
      <microsoft.scripting>
      <languages>
      <language names="IronPython;Python;py" extensions=".py" displayName="IronPython" type="IronPython.Runtime.PythonContext,   IronPython"/>     
     </languages>
    

    Я протестировал код в vs 2013, и он работает без ошибок.