Как получить историю из Python C API - PullRequest
0 голосов
/ 28 декабря 2018

Я хочу получить счет истории (и содержимое) из Python.

Из командной строки это возможно с модулем readline (установленным через pip install pyreadline):

import readline
x=readline.get_current_history_length()
x

Выход2, как и должно быть.Однако тот же код, использующий Python C API, всегда возвращает ноль, независимо от фактической истории:

#include <Python.h>

long GetHistoryCount() {
    Py_Initialize();
    PyRun_SimpleString("import readline");
    PyRun_SimpleString("x=readline.get_current_history_length()");

    PyObject *mainModule = PyImport_AddModule("__main__");
    PyObject *var = PyObject_GetAttrString(mainModule, "x");

    Py_Finalize();
    return PyLong_AsLong(var);
}

int main(int argc, char **argv) {
    long count = GetHistoryCount();
    printf("Count: %ld", count);
    return EXIT_SUCCESS;
}

Отпечатки: Count: 0

Как получить историю из Python C API?

Найден модуль readline в этом обсуждении

...