7 способов запуска скрипта Python из C# с примерами кода

Интеграция сценариев Python в приложения C# может обеспечить дополнительную функциональность и использовать возможности обоих языков. В этой статье блога мы рассмотрим семь различных методов запуска сценария Python на C#, а также приведем примеры кода. Давайте погрузимся!

Метод 1: использование Process.Start

using System.Diagnostics;
class Program
{
    static void Main()
    {
        Process.Start("python", "script.py");
    }
}

Метод 2: использование IronPython

using IronPython.Hosting;
using Microsoft.Scripting.Hosting;
class Program
{
    static void Main()
    {
        ScriptEngine engine = Python.CreateEngine();
        ScriptScope scope = engine.CreateScope();
        ScriptSource source = engine.CreateScriptSourceFromFile("script.py");
        source.Execute(scope);
    }
}

Метод 3: использование Python.NET

using Python.Runtime;
class Program
{
    static void Main()
    {
        using (Py.GIL())
        {
            dynamic py = Py.Import("script");
            py.Run();
        }
    }
}

Метод 4: внедрение интерпретатора Python

using System;
using Python.Runtime;
class Program
{
    static void Main()
    {
        using (Py.GIL())
        {
            dynamic py = Py.Import("__main__");
            py.__dict__["__builtins__"] = Py.Import("__builtin__");
            py.execfile("script.py");
        }
    }
}

Метод 5: использование библиотеки Pythia

using Pythia.Core;
class Program
{
    static void Main()
    {
        PyEngine.Initialize();
        dynamic py = PyEngine.CreateModule("script");
        py.Run();
        PyEngine.Shutdown();
    }
}

Метод 6: использование ZeroMQ

using System;
using NetMQ;
using NetMQ.Sockets;
class Program
{
    static void Main()
    {
        using (var context = NetMQContext.Create())
        using (var requester = context.CreateRequestSocket())
        {
            requester.Connect("tcp://localhost:5555");
            requester.SendFrame("script.py");
            string result = requester.ReceiveFrameString();
            Console.WriteLine(result);
        }
    }
}

Метод 7. Использование REST API

using System;
using System.Net.Http;
class Program
{
    static void Main()
    {
        using (var httpClient = new HttpClient())
        {
            var response = httpClient.GetAsync("http://localhost:5000/run-script").Result;
            string result = response.Content.ReadAsStringAsync().Result;
            Console.WriteLine(result);
        }
    }
}

Запуск сценария Python из приложения C# открывает множество возможностей для использования сильных сторон обоих языков. В этой статье мы рассмотрели семь методов с примерами кода, включая использование Process.Start, IronPython, Python.NET, внедрение интерпретатора Python, библиотеки Pythia, ZeroMQ и интеграцию REST API. Выберите метод, который лучше всего соответствует вашим требованиям, и начните легко включать сценарии Python в свои приложения C#!