чтение глобальной переменной Python в C
Я пытаюсь научиться правильно использовать API Python / C - все, что мне действительно нужно сделать, это прочитать глобальную переменную (в моем словаре падежей - но я начинаю с простой целочисленной переменной). Используя обсуждение:Как получить доступ к глобальной переменной Python из C? и источник ответа там:http://bytes.com/topic/python/answers/705918-c-api-embedded-python-how-get-set-named-variables Я написал эту маленькую вещь:
Код Python (tryStuff.py):
var1 = 1
var2 = ['bla', 'blalba']
var3 = {"3" : "Three", "2" : "Two", "1" : "One", "0" : "Ignition!"}
print "end of file - tryStuff!!"
Код C (embedPythonTry.c):
#include <python2.7/Python.h>
int main(int argc, char **argv){
Py_Initialize();
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('<the absolute path of the folder in which the python file is located>')");
PyImport_ImportModule("tryStuff");
printf("After the import, before the addition\n");
PyObject *mainModule = PyImport_AddModule("__main__");
PyObject *var1Py = PyObject_GetAttrString(mainModule, "var1");
int var1Int = PyInt_AsLong(var1Py);
printf("var1=%d ; var1==NULL: %d\n", var1Int, var1Py==NULL);
Py_XDECREF(var1Py);
Py_Finalize();
return 0;
}
Результат выполнения этой c программы:
end of file - tryStuff!!
After the import, before the addition
var1=-1 ; var1==NULL: 1
Это означает, что интерпретатор Python находит и запускает правильный скрипт Python, но каким-то образом ему не удается прочитать переменную (var1).
Может кто-нибудь заметить проблему - я вроде уже потерян. Это выглядит как самая простая ситуация, в которой можно применить API Python / C, но это не работает. Что мне не хватает?