Как получить доступ к глобальной переменной Python от C?

Просто используйте QUIET, как показано ниже:

find_package(PackageName QUIET)

Если файл конфигурации пакета не найден, CMake выдаст ошибку, описывающую проблему, если не указан аргумент QUIET.

blockquote>

https://cmake.org/cmake/help/v3.8/command/find_package.html?highlight=i

9
задан Peter 12 November 2008 в 21:32
поделиться

3 ответа

Я не гуру Python, но я нашел этот вопрос интересным, таким образом, я погуглил вокруг. Это было первым хитом на "Python, встраивающем API" - он помогает?

Если атрибуты принадлежат глобальной области видимости модуля, то можно использовать "PyImport_AddModule" для получения дескриптора к объекту модуля. Например, если бы Вы хотели получить значение целого числа в основном модуле, названном "foobar", то Вы сделали бы следующее:

PyObject *m = PyImport_AddModule("__main__");
PyObject *v = PyObject_GetAttrString(m,"foobar");

int foobar = PyInt_AsLong(v);

Py_DECREF(v);
14
ответ дан 4 December 2019 в 10:34
поделиться

Я рекомендую использовать pyrex для создания дополнительного модуля, можно сохранить значения в в Python и cdef набор функций, которые могут быть вызваны от C для возвращения значений там.

Иначе много зависит от типа значений, которые Вы пытаетесь передать.

0
ответ дан 4 December 2019 в 10:34
поделиться

Вы готовы изменить API немного?

  • Можно заставить функцию C возвратить новое значение для глобального, и затем назвать его как это:

    my_global = my_c_func(...)

  • При использовании Robin или API Python C непосредственно можно передать globals словарь как дополнительный параметр и изменить его

  • Если Ваше глобальное всегда находится в том же модуле, решение Sherm выглядит большим
0
ответ дан 4 December 2019 в 10:34
поделиться
Другие вопросы по тегам:

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