Running Python from C#
Having posted a number of times about Ruby over the last few months, I thought I should also write a bit about Python. The first thing I decided to try and do was to run some IronPython from C#. I downloaded version 2.0 beta 5, which includes the latest version of the DLR. I created a Console Application and added references to Microsoft.Scripting.dll and Microsoft.Scripting.Core.dll – the assemblies that constitute the DLR. I also added a reference to IronPython.dll and IronPython.Modules.dll. I decided to try to output some text, set a variable in IronPython and retrieve the value in C#. Here’s the code:
ScriptRuntimeSetup setup = new ScriptRuntimeSetup(); setup.LanguageSetups.Add(IronPython.Hosting.Python.CreateLanguageSetup(null)); ScriptRuntime runtime = new ScriptRuntime(setup); runtime.IO.RedirectToConsole(); ScriptEngine engine = runtime.GetEngine("IronPython"); ScriptScope scope = engine.CreateScope(); ScriptSource source = engine.CreateScriptSourceFromString("print 'Hello World'\r\na=1", SourceCodeKind.Statements); source.Execute(scope); Console.WriteLine(scope.GetVariable("a"));
I’m impressed that C# and IronPython can interact like this. The possibilities for extending applications with runtime dynamic code are intriguing – worth looking into.