Cython с Scikit-build: модуль Dynami c не определяет функцию экспорта модуля - PullRequest
0 голосов
/ 18 июня 2020

Я проводил несколько тестов с примером cython hello world в scikit-build-sample-projects и заметил, что если я изменю имя некоторых файлов и соответствующих им полей в CMakeLists.txt, компиляция работает без ошибок, но при попытке получить результат могут появиться следующие ошибки:

Для python3: ImportError: dynamic module does not define module export function (PyInit_...

Для python2: ImportError: dynamic module does not define module export function (Init_...

и более подробно изучив файл c ++ , я нашел эти части:

#if PY_MAJOR_VERSION < 3
PyMODINIT____FUNC init_hello(void)
{
  (void) Py_InitModule("_rectangle", hello_methods);
}
#else /* PY_MAJOR_VERSION >= 3 */
static struct PyModuleDef hello_module_def = {
  PyModuleDef_HEAD_INIT,
  "_rectangle",
  "Internal \"_rectangle\" module",
  -1,
  hello_methods
};

PyMODINIT_FUNC PyInit__rectangle(void)
{
  return PyModule_Create(&hello_module_def);
}
#endif /* PY_MAJOR_VERSION >= 3 */

где, если я изменю части «_hello» на новое имя, которое я определил в проекте, все снова работает .

Теперь я хочу попробовать исходный пример класса прямоугольника Cython и не уверен, как заставить его работать из-за вышеуказанной части. Мне кажется, что нужно изменить код прямоугольника на c ++.

Кто-нибудь знает, как мы можем воспроизвести пример прямоугольника Cython с помощью сборки scikit с учетом указанной выше проблемы?

...