Поддержка построения модуля на 2 Python2 и Python3 - PullRequest
0 голосов
/ 19 марта 2020

я определяю новый тип для Python. Я хочу добавить поддержку для обоих зданий (Python2 и Python3).
python2 setup.py build
python3 setup.py build
Я создал функцию, которая превращает мой тип в ее строковое представление (в Python2).

PyObject *
pyfloat_str(PyObject *self)
{
    char str[128];
    int st;
    ieee754 q = ((PyFlt*)self)->obval;

    st = snprintf(str, sizeof(str), "%f", float(q));
    if (st < 0) {
        fprintf(stderr, "BAD\n");
    }
    return PyString_FromString(str);
}

Но в python3 PyString_FromString() не определено. Вместо этого у нас есть PyUnicode_FromString(). Как я сказал в начале, я хотел бы добавить поддержку для обоих зданий. Поэтому я ищу что-то вроде этого.

PyObject *
pyfloat_str(PyObject *self)
{
    char str[128];
    int st;
    ieee754 q = ((PyFlt*)self)->obval;

    st = snprintf(str, sizeof(str), "%f", float(q));
    if (st < 0) {
        fprintf(stderr, "BAD\n");
    }

    #ifInvokedWithPython2Buidling
       return PyString_FromString(str);
    #else
       return PyUnicode_FromString(str);
}

Как правильно это сделать?

...