Интеграция python в приложение C #

У меня следующая проблема: Я получил старое приложение, написанное на python. Это приложение позволяет пользователю указывать небольшие шаги Python, которые будут выполняться, шаги Python в основном представляют собой небольшие сценарии Python, я называю их шагами, потому что выполнение этого приложения включает в себя другие шаги, такие как выполнение чего-либо из командной строки. Эти шаги Python хранятся в виде кода Python в XML-файле.

Теперь я хочу переписать приложение, используя C # .NET. Есть ли наилучшее практическое решение, чтобы сделать что-то подобное?

Я не хочу называть python внешней программой и передавать фактический шаг (скрипт) python интерпретатору python - я хочу что-то встроенное. Я только что натолкнулся на IronPython и .NET python, но я не совсем уверен, какие один для использования. Я хочу добиться некоторой отладки для небольших сценариев, поэтому вызов решения интерпретатора недопустим.

Что более важно, так это то, что многие из этих сценариев уже существуют. Поэтому я должен использовать реализацию Python на C #, которая имеет тот же синтаксис, что и python, а также те же встроенные библиотеки python. Это вообще возможно?

Спасибо и привет Xeun

7 голосов | спросил Xeun 17 PMpThu, 17 Apr 2014 13:12:39 +040012Thursday 2014, 13:12:39

3 ответа


0

IronPython - это то, что вам нужно. Компилируется в байт-код .NET. Вы можете достаточно легко вызывать код Python из другого языка .NET (и наоборот). Я думаю, что IronPython поддерживается и в Visual Studio.

ответил cdjc 17 PMpThu, 17 Apr 2014 13:37:26 +040037Thursday 2014, 13:37:26
0

Python-скрипты могут быть выполнены из C # с IronPython.

    var ipy = Python.CreateRuntime();
    dynamic test = ipy.UseFile("Test.py");
    test.Simple();

Смотрите также:

http://putridparrot.com/blog/hosting-ironpython- в-ас-приложения /

и

ответил FrankyHollywood 10 +03002017-10-10T11:39:11+03:00312017bEurope/MoscowTue, 10 Oct 2017 11:39:11 +0300 2017, 11:39:11
0

Вы можете использовать ScriptScope.GetVariable в IronPython, чтобы получить реальную функцию, а затем вызвать ее как функцию C #. Используйте это так:

Код C #:

var var1, var2 = ...
ScriptEngine engine = Python.CreateEngine();
ScriptScope scope = engine.CreateScope();
engine.ExecuteFile(@"C:\test.py", scope);
dynamic testFunction = scope.GetVariable("test_func");
var result = testFunction(var1,var2);

Код Python:

def test_func(var1,var2):
    ...do something...

Мне потребовалось некоторое время, чтобы наконец понять это, и это довольно просто ... И IronPython бесплатный и довольно простой в использовании. Надеюсь, это поможет:)

ответил liron 4 TueEurope/Moscow2018-12-04T15:01:07+03:00Europe/Moscow12bEurope/MoscowTue, 04 Dec 2018 15:01:07 +0300 2018, 15:01:07

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132