sanya84
@sanya84
Фанатик Python 3

SystemError: Bad call flags in PyCFunction_Call. METH_OLDARGS is no longer supported! что это за ошибка?

всем привет!
При помощи
distutils
создал модуль
example.pyd
вот исходники
setup.py
from distutils.core import setup
from distutils.extension import Extension
examplemodule = Extension(name="example", sources=['example.c', ])
setup(name="example", ext_modules=[examplemodule])

main.py
from example import hello
print(hello(who=None))

example.c
#include <Python.h>
 
PyObject *hello( PyObject *self, PyObject *args, PyObject *kwargs )
{
    char *who = 0;
    static char *keywords[] = {"who", NULL};
 
    if (PyArg_ParseTupleAndKeywords(args, kwargs, "s", keywords, &who))
    {
        return PyUnicode_FromFormat("Hello %s", who);
    }
    return NULL;
}
 
 
static PyMethodDef example_methods[] = 
{
    { "hello", (PyCFunction) hello, METH_KEYWORDS, "hello(who) -- return \"Hello who\"" },
    { NULL, 0, 0, NULL }
};
 
 
static struct PyModuleDef example_module = 
{
    PyModuleDef_HEAD_INIT,
    "example",
    NULL,
    -1,
    example_methods
};
 
 
PyMODINIT_FUNC PyInit_example(void)
{
    return PyModule_Create(&example_module);
}

Всё собралось без ошибок но при запуске
main.py
получаю такую ошибку
Traceback (most recent call last):
  File "C:\PyC++Pyd\main.py", line 2, in <module>
    print(hello(who=None))
SystemError: Bad call flags in PyCFunction_Call. METH_OLDARGS is no longer supported!

Вопрос с чем связанна ошибка и как её исправить?
  • Вопрос задан
  • 393 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы