Можно ли использовать pybind11 с существующим написанным вручную Python API? - PullRequest
0 голосов
/ 15 апреля 2020

Моя библиотека C ++ уже имеет довольно значительный написанный вручную API Python с использованием Python C API. Я не хочу существенно менять свой существующий код, но некоторые функции в pybind11 были бы действительно удобны.

Возможно ли интегрировать pybind11 с существующим написанным вручную API? Т.е. было бы возможно просто:

static PyObject *object_stuff(PyObject *self, PyObject *args, PyObject *kwds) {
    int i = do_stuff(...);
    return py::cast(i);
}

и сохранить мой существующий модуль python и код определения типа C код?

1 Ответ

0 голосов
/ 28 апреля 2020

Да, pybind11 предлагает вам обернуть существующий код python. Подробнее об этом можно прочитать в документации .

Доступ к нему можно получить, создав python объекты.

py::object scipy = py::module::import("scipy");
return scipy.attr("__version__");
...