CPython скриптование управляемых приложений.
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 11.12.20 14:11
Оценка: -2
Видили ли вы где-нибудь пример того, чтобы приложение было написано на 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-ом, например).

pythonnet offers a simple way to call C# from a Python program.
https://github.com/pythonnet/pythonnet

Есть ли другие решения?
Отредактировано 11.12.2020 14:41 Эйнсток Файр . Предыдущая версия .
c# interop безумие python3
Re: CPython скриптование управляемых приложений.
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 11.12.20 15:55
Оценка: 2 (1)
можно .Net использовать так
Кроссплатформенное использование классов .Net из неуправляемого кода. Или аналог IDispatch на Linux

Ну и для разных версий .Net Core свой Api

Написание пользовательского хост-приложения NET Core для управления средой выполнения .NET из машинного кода

Пример
https://github.com/dotnet/samples/blob/master/core/hosting/HostWithHostFxr/src/NativeHost/nativehost.cpp
и солнце б утром не вставало, когда бы не было меня
Re[2]: CPython скриптование управляемых приложений.
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 11.12.20 17:30
Оценка:
"тему не читай, сразу отвечай"
Re[3]: CPython скриптование управляемых приложений.
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 11.12.20 18:46
Оценка: 4 (1) +1
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>"тему не читай, сразу отвечай"

А как сам питон будет общаться с .NET-приложением?
Ну, там будет враппер (написанный на python) к C-библиотеке,
которая будет через любой из механизмов взаимодействия между процессами
общаться с .Net-приложением.


Я тебе как раз дал ссылки на общение. Можешь в одном процессе, а можешь и через Tcp/Ip или пайпах
.Net Core, AppDomain, WCF, RPC маршалинг по Tcp/Ip свой велосипед

Суть в том, что ты из питона можешь вызвать любой метод класса, объекта получить передать перечисления итд.
В том числе дженерики, подписка на события итд итп
и солнце б утром не вставало, когда бы не было меня
Отредактировано 11.12.2020 18:52 Serginio1 . Предыдущая версия .
Re: CPython скриптование управляемых приложений.
От: okon  
Дата: 13.12.20 11:02
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>Видили ли вы где-нибудь пример того, чтобы приложение было написано на C#,

ЭФ>а к нему предлагалось скриптование на Python, причём нативным питоном из операционной системы,
ЭФ>без всяких там IronPython.

А чем IronPython не угодил ?
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Re[2]: CPython скриптование управляемых приложений.
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 13.12.20 11:25
Оценка:
O> чем IronPython не угодил ?

Тем, что он не каноничный.

Должна быть интеграция с сообществом питона,
чтобы все самые свежие фичи были доступны.
Re: CPython скриптование управляемых приложений.
От: TK Лес кывт.рф
Дата: 14.12.20 10:28
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>И вот есть какая-то на 80% написанная на C# (т.е. C# будет загружен и во второй процесс с питоном,

ЭФ>что не очень хорошо, но можно пережить и воспользоваться Remoting-ом, например).

ЭФ>pythonnet offers a simple way to call C# from a Python program.

ЭФ>https://github.com/pythonnet/pythonnet

Откуда вывод, что C# будет загружен в процесс с питоном? Есть разные сценарии использования. Например, С# приложение и встраиваемый питон
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: CPython скриптование управляемых приложений.
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 14.12.20 10:35
Оценка:
TK> Есть разные сценарии использования. Например, С# приложение и встраиваемый питон

Питон — это источник нестабильности и падучести в C# приложении. Верно?
Как раз этого сценария использования я и стараюсь избежать.
Re[3]: CPython скриптование управляемых приложений.
От: TK Лес кывт.рф
Дата: 14.12.20 11:14
Оценка: +1
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>Питон — это источник нестабильности и падучести в C# приложении. Верно?

ЭФ>Как раз этого сценария использования я и стараюсь избежать.

Откуда такой выбор? От кривизны рук зависит.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[4]: CPython скриптование управляемых приложений.
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 14.12.20 11:20
Оценка:
TK> От кривизны рук зависит.
Руки делятся на свои и third party.
Например пользователь программы может из питона использовать какую-нибудь C-бибилиотеку, а она закрешится.
Ругать будут мою программу.

TK> Откуда такой выбор?

Поэтому выбор запускать питон не в этом же, а в другом процессе очевиден. Не так ли?
Re: CPython скриптование управляемых приложений.
От: _FRED_ Черногория
Дата: 15.12.20 12:42
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>Видили ли вы где-нибудь пример того, чтобы приложение было написано на C#,

ЭФ>а к нему предлагалось скриптование на Python, причём нативным питоном из операционной системы,
ЭФ>без всяких там IronPython.

Я в похожем участвовал, только пайтон выполнялся в этом же .НЕТ процессе.

ЭФ>1) .Net-приложение это процесс…

ЭФ>2) если хочется запустить питон </…/> то лучше бы это делать в соседнем процессе.
ЭФ>3) надо обеспечить…
ЭФ>4) надо сделать окошечко…
ЭФ>А как сам питон будет общаться с .NET-приложением?…

Судя по вышеперечисленному, вас больше интересует то, как наладить взаимодействие процессов, а не какая-то специфика пайтона.
Считайте, что вам нужно запустить некий сторонний процесс, что-то записать ему в стандартный ввод и вычитать из стандартного вывода, так ведь получается?

Судя по списку требований должно хватить функционала стандартного Process.
Help will always be given at Hogwarts to those who ask for it.
Re[2]: CPython скриптование управляемых приложений.
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 15.12.20 12:53
Оценка:
_FR>Судя по вышеперечисленному, вас больше интересует

Нет, из перечисленного следует, что эту часть я представляю лучше, поэтому вопросы по ней конкретнее.

А другую часть (когда питон вызывает какую-то библиотеку, которая взаимодействует с той стороны)
я представляю слабее, поэтому по ней вопросов меньше.
Re: CPython скриптование управляемых приложений.
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 15.12.20 13:35
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:


ЭФ>А как сам питон будет общаться с .NET-приложением?

ЭФ>Ну, там будет враппер (написанный на python) к C-библиотеке,

Если не нужна кроссплатформенность то можно через COM
Как вызвать метод из C# в 1С?
и солнце б утром не вставало, когда бы не было меня
Re[2]: CPython скриптование управляемых приложений.
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 15.12.20 16:19
Оценка: :)
S> Если не нужна кроссплатформенность то можно через COM

Кроссплатформенность не нужна, нужен только Linux.
(и ничего смешного, это же очевидно из желания видеть питон скриптовым языком)
Отредактировано 16.12.2020 0:30 Эйнсток Файр . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.