Я проводил несколько тестов с примером 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 с учетом указанной выше проблемы?