IronPython - загрузка скрипта из строки в приложении C # 4.0 - PullRequest
2 голосов
/ 28 января 2010

У меня есть следующий код (просто тест):

var engine = Python.CreateEngine();
var runtime = engine.Runtime;

    try
    {                
        dynamic test = runtime.UseFile(@"d:\test.py");

        test.SetVariable("y", 4);
        test.SetVariable("client", UISession.ControllerClient);
        test.Simple();
    }
    catch (Exception ex)
    {
        var eo = engine.GetService<ExceptionOperations>();
        Console.WriteLine(eo.FormatException(ex));
    }

Но я бы хотел вместо этого загрузить скрипт из строки.

Ответы [ 2 ]

7 голосов
/ 28 января 2010

Вы можете использовать engine.CreateScriptSourceFromString для загрузки сценария в область из строки, а не из файла.

     StringBuilder sb = new StringBuilder();
     sb.Append("def helloworld():\r\n");
     sb.Append("    print \"hello world\"\r\n");
     string code = sb.ToString();
     ScriptEngine engine = Python.CreateEngine();         
     ScriptSource source = engine.CreateScriptSourceFromString(code, SourceCodeKind.File);
     ScriptScope scope = engine.CreateScope();
     source.Execute(scope);
     Func<object> func = scope.GetVariable<Func<object>>("helloworld");
     Console.WriteLine(func());
3 голосов
/ 28 января 2010

Может ли этот пример помочь справочнику IronPython Cookbook? Он о том, как вызывать ваши методы класса Python из c # ... но он также содержит рабочий пример загрузки скрипта из файла. Пример работает на IronPython 2.6 (вы должны быть осторожны с тем, какую версию они меняют в хостинге).

http://www.ironpython.info/index.php/Using_Python_Classes_from_.NET/CSharp_IP_2.6

...