Используя pyd файл в C#?
Я разрабатываю программу с использованием C#, но я только что понял, что то, что я собираюсь запрограммировать, очень очень сложно в C#, но легко в Python. Так что я хочу сделать.pyd файл и использовать его в программе на C#, но я не знаю как. Я искал об этом, но я ничего не мог найти.
Итак, вот мои вопросы: как мне использовать.pyd файл в C#? Я знаю, что pyd-файлы похожи на dll-файлы, поэтому pyd-файлы по-прежнему можно использовать на компьютерах, на которых не установлен Python?
1 ответ
Файл.pyd - это DLL, но с функцией init*() где * - имя вашего файла.pyd. Например, в spam.pyd есть функция с именем initspam()
, Они не просто похожи, но одинаковы! Их можно использовать на ПК без Python.
Не забывайте: встроенные функции НЕ будут доступны. Найдите их в C, добавьте их как extern в ваш код Cython и скомпилируйте!
Используйте pythonnet
Руководство
Вам нужно состояние GIL.
using (Py.GIL())
{
// Your code here
}
Внутри блока GIL создайте область видимости.
using (Py.GIL())
{
using (PyScope scope = Py.CreateScope())
{
// Your code here
}
}
Чтобы выполнить код:
scope.Exec(codeStr);
Чтобы установить переменную:
scope.Set(name, value); // 'name' is a string and 'value' is a 'PyObject' object.
Преобразовать в PyObject
:
obj.ToPython()
Преобразовать в PyObject
если вам нужно поместить свой объект в Python.
Для оценки [0] [1] [2] [3] [4]выражение:
scope.Eval(expr)
Чтобы получить значение переменной [5] [6]:
scope.Get(variableName)
Код C# без точки с запятой перед комментарием, состоящий из одной строки, представляет выражение.
Ссылки
0: https://codereview.stackexchange.com/questions/160524/evaluating-arithmetic-expressions
1: https://www.programiz.com/python-programming/methods/built-in/eval
2: Что делает Python eval() делать? на SO
3: https://docs.python.org/3/reference/expressions.html
4: Python - вычислить математическое выражение внутри строки на SO
5: https://realpython.com/python-variables
6: https://www.w3schools.com/python/python_variables.asp