Используя 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

Другие вопросы по тегам