Видили ли вы где-нибудь пример того, чтобы приложение было написано на C#,
а к нему предлагалось скриптование на Python, причём нативным питоном из операционной системы,
без всяких там IronPython.
1) .Net-приложение это процесс, точнее код, выполняемый в процессе, созданном операционной системой.
Причём это управляемый код. То есть рантайм среды выполнения даёт гарантии по поводу работы кода в пределах процесса.
2) если хочется запустить питон (то есть неуправляемый код интерпретатора CPython,
то лучше бы это делать в соседнем процессе.
3) надо обеспечить перехват вывода на консоль,
а так же подачу ввода на стандартный ввод.
4) надо сделать окошечко, где пользователь будет видет консоль интерпретатора python
А как сам питон будет общаться с .NET-приложением?
Ну, там будет враппер (написанный на python) к C-библиотеке,
которая будет через любой из механизмов взаимодействия между процессами
общаться с .Net-приложением.
Где питоновые библиотеки взять? Они тут:
https://pypi.org/
Python Package Index
a repository of software for the Python programming language.
И вот есть какая-то на 80% написанная на C# (т.е. C# будет загружен и во второй процесс с питоном,
что не очень хорошо, но можно пережить и воспользоваться Remoting-ом, например).
Здравствуйте, Эйнсток Файр, Вы писали:
ЭФ>"тему не читай, сразу отвечай"
А как сам питон будет общаться с .NET-приложением?
Ну, там будет враппер (написанный на python) к C-библиотеке,
которая будет через любой из механизмов взаимодействия между процессами
общаться с .Net-приложением.
Суть в том, что ты из питона можешь вызвать любой метод класса, объекта получить передать перечисления итд.
В том числе дженерики, подписка на события итд итп
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Эйнсток Файр, Вы писали:
ЭФ>Видили ли вы где-нибудь пример того, чтобы приложение было написано на C#, ЭФ>а к нему предлагалось скриптование на Python, причём нативным питоном из операционной системы, ЭФ>без всяких там IronPython.
А чем IronPython не угодил ?
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, Эйнсток Файр, Вы писали:
ЭФ>И вот есть какая-то на 80% написанная на C# (т.е. C# будет загружен и во второй процесс с питоном, ЭФ>что не очень хорошо, но можно пережить и воспользоваться Remoting-ом, например).
ЭФ>pythonnet offers a simple way to call C# from a Python program. ЭФ>https://github.com/pythonnet/pythonnet
Откуда вывод, что C# будет загружен в процесс с питоном? Есть разные сценарии использования. Например, С# приложение и встраиваемый питон
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, Эйнсток Файр, Вы писали:
ЭФ>Питон — это источник нестабильности и падучести в C# приложении. Верно? ЭФ>Как раз этого сценария использования я и стараюсь избежать.
Откуда такой выбор? От кривизны рук зависит.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
TK> От кривизны рук зависит.
Руки делятся на свои и third party.
Например пользователь программы может из питона использовать какую-нибудь C-бибилиотеку, а она закрешится.
Ругать будут мою программу.
TK> Откуда такой выбор?
Поэтому выбор запускать питон не в этом же, а в другом процессе очевиден. Не так ли?
Здравствуйте, Эйнсток Файр, Вы писали:
ЭФ>Видили ли вы где-нибудь пример того, чтобы приложение было написано на C#, ЭФ>а к нему предлагалось скриптование на Python, причём нативным питоном из операционной системы, ЭФ>без всяких там IronPython.
Я в похожем участвовал, только пайтон выполнялся в этом же .НЕТ процессе.
ЭФ>1) .Net-приложение это процесс… ЭФ>2) если хочется запустить питон </…/> то лучше бы это делать в соседнем процессе. ЭФ>3) надо обеспечить… ЭФ>4) надо сделать окошечко… ЭФ>А как сам питон будет общаться с .NET-приложением?…
Судя по вышеперечисленному, вас больше интересует то, как наладить взаимодействие процессов, а не какая-то специфика пайтона.
Считайте, что вам нужно запустить некий сторонний процесс, что-то записать ему в стандартный ввод и вычитать из стандартного вывода, так ведь получается?
Судя по списку требований должно хватить функционала стандартного Process.
Help will always be given at Hogwarts to those who ask for it.