| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Вызов функций написанных на Python в C# |
| Автор: Poisent 13.11.2007, 23:38 |
| Есть набор функций написанных на Python, необходимо вызвать эти функции из C#, с указанными параметрами и обработать возвращаемые значение. Аналогичные действия необходимо проделать с JavaScript, Lua, Perl. |
| Автор: marcusmae 14.11.2007, 00:10 |
| http://pythonnet.sourceforge.net/readme.html http://www.lua.inf.puc-rio.br/luanet/lua2il/ Для Perl, видимо, только коммерческие портирования в .NET (или я не нашёл?). А JScript есть и так : доступен через ASP.NET |
| Автор: Poisent 14.11.2007, 15:02 |
| Мне надо не эти языки под Net, а выпорлнение самих скриптов, в исходном виде с помощью родных компиляторов/интерпритаторов. Т.Е. есть какой-то сценарий Python, где есть функция Foo(int), которая возхвращает например входной параметр*2. Так вон, мне надо, что б моё приложение запускало этот скрипт в исходном виде, (Python) и получало значение от этого скрипта. |
| Автор: Void 14.11.2007, 20:16 | ||||
| Сериализовать параметры в JSON, передать их прокси-модулю на скриптовом языке через стандартный ввод вместе с именем функции. Тот вызовет функцию, снова закодирует результат в JSON и вернёт через стандартный вывод. Почему JSON? Легковесный и отлично поддерживается в каждом из перечисленных языков, для JS вообще родной (http://json.org/json-ru.html). Можно посмотреть на XML-RPC и SOAP. С COM я бы связывался в последнюю очередь. Для Питона, к примеру, простейший прокси будет выглядеть так:
Соответственно, подав ему на ввод строку
получим на выходе 1.73205... На стороне C# можно использовать http://litjson.sourceforge.net/. |
| Автор: Poisent 15.11.2007, 14:33 |
| Спасибо за ответы. Буду копать. |
| Автор: Poisent 15.11.2007, 23:51 |
| А где можно выудить названия COM объектов соответствующих необходимым мне интерпритаторам. |
| Автор: marcusmae 16.11.2007, 00:36 | ||
Попробовать поподключать к проекту какие-нибудь exe/dll интерпретаторов. Он сам попробует выудить. Или при подключении в References проекта перейти на вкладку COM и найти их там. Список COMов строится, тк система знает, какие COM-объекты в ней зарегестрировались - эта информация хранится в реестре. |
| Автор: Poisent 16.11.2007, 09:06 | ||
Я знаю архитектуру COM. Установил Python, он не предоставляет COM объектов. |
| Автор: marcusmae 16.11.2007, 09:50 | ||
Хорошо, во всяком случае, через COM можно взаимодействовать непосредственно с питоновским скриптом. Как зарегистрировать в нём COM-объект, показано http://www.pyzine.com/Issue007/Section_Articles/article_PythonCOM.html. |